From 5a7d0a0e659afe92e5356cc0dff3912c54ccd6f4 Mon Sep 17 00:00:00 2001 From: edg-l Date: Wed, 13 Mar 2024 10:14:30 +0000 Subject: [PATCH] deploy: 7c3bc054e5434ba9dededfb7c2a2894597affc6a --- edb/fn.main.html | 2 +- edb/index.html | 2 +- edlang_driver/fn.compile.html | 2 +- edlang_driver/index.html | 2 +- edlang_ir/enum.BinOp.html | 4 +- edlang_ir/enum.ConstKind.html | 4 +- edlang_ir/enum.ConstValue.html | 4 +- edlang_ir/enum.FloatTy.html | 10 +- edlang_ir/enum.IntTy.html | 10 +- edlang_ir/enum.LocalKind.html | 4 +- edlang_ir/enum.LogicalOp.html | 4 +- edlang_ir/enum.Operand.html | 4 +- edlang_ir/enum.PlaceElem.html | 4 +- edlang_ir/enum.RValue.html | 4 +- edlang_ir/enum.StatementKind.html | 4 +- edlang_ir/enum.Terminator.html | 4 +- edlang_ir/enum.TypeKind.html | 10 +- edlang_ir/enum.UintTy.html | 10 +- edlang_ir/enum.UnOp.html | 4 +- edlang_ir/enum.ValueTree.html | 4 +- edlang_ir/index.html | 2 +- edlang_ir/struct.AdtBody.html | 4 +- edlang_ir/struct.AdtVariant.html | 4 +- edlang_ir/struct.BasicBlock.html | 4 +- edlang_ir/struct.Body.html | 4 +- edlang_ir/struct.ConstData.html | 4 +- edlang_ir/struct.DebugInfo.html | 4 +- edlang_ir/struct.DefId.html | 12 +- edlang_ir/struct.Local.html | 6 +- edlang_ir/struct.ModuleBody.html | 4 +- edlang_ir/struct.Place.html | 4 +- edlang_ir/struct.ProgramBody.html | 7 +- edlang_ir/struct.Statement.html | 4 +- edlang_ir/struct.SwitchTarget.html | 4 +- edlang_ir/struct.TypeInfo.html | 10 +- edlang_lowering/fn.lower_modules.html | 4 +- edlang_lowering/fn.lower_type.html | 2 +- edlang_lowering/index.html | 2 +- edlang_parser/all.html | 2 +- edlang_parser/fn.error_to_report.html | 2 +- edlang_parser/fn.parse_ast.html | 7 +- edlang_parser/fn.print_report.html | 2 +- .../struct.TopLevelModuleParser.html} | 6 +- edlang_parser/grammar/grammar/index.html | 2 +- .../grammar/grammar/sidebar-items.js | 2 +- .../struct.BinaryFirstLvlOpParser.html | 5 +- .../struct.BinarySecondLvlOpParser.html | 5 +- .../struct.BinaryThirdLvlOpParser.html | 5 +- .../grammar/grammar/struct.ModuleParser.html | 5 +- .../grammar/struct.PathSegmentsParser.html | 5 +- ....html => struct.TopLevelModuleParser.html} | 7 +- .../grammar/grammar/struct.UnaryOpParser.html | 5 +- .../grammar/grammar/trait.__ToTriple.html | 10 +- edlang_parser/index.html | 2 +- search-index.js | 6 +- src/edb/main.rs.html | 40 +- src/edlang_driver/lib.rs.html | 16 +- src/edlang_ir/lib.rs.html | 2 + src/edlang_lowering/lib.rs.html | 36 +- .../out/grammar.rs.html | 168236 +++++++++------ src/edlang_parser/lib.rs.html | 20 +- trait.impl/core/default/trait.Default.js | 2 +- trait.impl/core/marker/trait.Freeze.js | 2 +- trait.impl/core/marker/trait.Send.js | 2 +- trait.impl/core/marker/trait.Sync.js | 2 +- trait.impl/core/marker/trait.Unpin.js | 2 +- .../panic/unwind_safe/trait.RefUnwindSafe.js | 2 +- .../panic/unwind_safe/trait.UnwindSafe.js | 2 +- type.impl/core/result/enum.Result.js | 2 +- 69 files changed, 105581 insertions(+), 63044 deletions(-) rename edlang_parser/grammar/grammar/{__parse__Modules/struct.ModulesParser.html => __parse__TopLevelModule/struct.TopLevelModuleParser.html} (51%) rename edlang_parser/grammar/grammar/{struct.ModulesParser.html => struct.TopLevelModuleParser.html} (51%) diff --git a/edb/fn.main.html b/edb/fn.main.html index 80c04cfa46..ebc5133376 100644 --- a/edb/fn.main.html +++ b/edb/fn.main.html @@ -1,2 +1,2 @@ main in edb - Rust -

Function edb::main

source ·
pub(crate) fn main() -> Result<()>
\ No newline at end of file +

Function edb::main

source ·
pub(crate) fn main() -> Result<()>
\ No newline at end of file diff --git a/edb/index.html b/edb/index.html index dd91730328..76d9fed59e 100644 --- a/edb/index.html +++ b/edb/index.html @@ -1,3 +1,3 @@ edb - Rust -
\ No newline at end of file +
\ No newline at end of file diff --git a/edlang_driver/fn.compile.html b/edlang_driver/fn.compile.html index 3ee10b3166..8c8c2ac9b2 100644 --- a/edlang_driver/fn.compile.html +++ b/edlang_driver/fn.compile.html @@ -1,2 +1,2 @@ compile in edlang_driver - Rust -

Function edlang_driver::compile

source ·
pub fn compile(args: &CompilerArgs) -> Result<PathBuf>
\ No newline at end of file +

Function edlang_driver::compile

source ·
pub fn compile(args: &CompilerArgs) -> Result<PathBuf>
\ No newline at end of file diff --git a/edlang_driver/index.html b/edlang_driver/index.html index 2b493b9b82..a9cf138355 100644 --- a/edlang_driver/index.html +++ b/edlang_driver/index.html @@ -1,3 +1,3 @@ edlang_driver - Rust -
\ No newline at end of file +
\ No newline at end of file diff --git a/edlang_ir/enum.BinOp.html b/edlang_ir/enum.BinOp.html index 87bf72d7f7..c4a4e13abc 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 8d0d8b4ba8..465011bf4d 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 33cc757f64..d4e0c93952 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 6fd2e63a8a..301e57bbcc 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 d6fbed5347..125768a2b7 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 bd030596a3..f464f6cfb1 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 2117df0a74..67fd63307c 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 6fe8aea820..d9f239e6fb 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 cf8c7841ce..331dc02ff3 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 cb5eb8828e..7be3a568b3 100644 --- a/edlang_ir/enum.RValue.html +++ b/edlang_ir/enum.RValue.html @@ -1,12 +1,12 @@ 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),
     Cast(Operand, TypeInfo, 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 80c53e95a2..633e24a760 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 5aca38c628..7301cc9fe3 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 8993bb510a..097dcda294 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, String),
-}

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, String)

Implementations§

source§

impl TypeKind

source

pub const fn is_unit(&self) -> bool

source

pub const fn is_integer(&self) -> bool

source

pub const fn is_signed_integer(&self) -> bool

source

pub const fn is_float(&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, String)

Implementations§

source§

impl TypeKind

source

pub const fn is_unit(&self) -> bool

source

pub const fn is_integer(&self) -> bool

source

pub const fn is_signed_integer(&self) -> bool

source

pub const fn is_float(&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 3917a0b0c7..771520f8b7 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 2f8498fccb..b6b6c41cbf 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 38f9e82299..5c6d022329 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 9f9670c634..2853351204 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 fb2d6eedb1..6048c74a29 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 6f29a0f487..2d914b7a17 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 885496ca87..a4aa4b77b7 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 5387786817..fc62ad82e0 100644 --- a/edlang_ir/struct.Body.html +++ b/edlang_ir/struct.Body.html @@ -1,5 +1,5 @@ Body in edlang_ir - Rust -

Struct edlang_ir::Body

source ·
pub struct Body {
+    

Struct edlang_ir::Body

source ·
pub struct Body {
     pub def_id: DefId,
     pub is_pub: bool,
     pub is_extern: 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

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 +}

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 c967671856..f96c3a9609 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 cdb131742d..ebf87dc492 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.DefId.html b/edlang_ir/struct.DefId.html index ab0beb0abc..6d8607f8d2 100644 --- a/edlang_ir/struct.DefId.html +++ b/edlang_ir/struct.DefId.html @@ -1,18 +1,18 @@ DefId in edlang_ir - Rust -

Struct edlang_ir::DefId

source ·
pub struct DefId {
+    

Struct edlang_ir::DefId

source ·
pub struct DefId {
     pub program_id: usize,
     pub id: usize,
 }
Expand description

Definition id.

-

Fields§

§program_id: usize§id: usize

Trait Implementations§

source§

impl Clone for DefId

source§

fn clone(&self) -> DefId

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 DefId

source§

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

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

impl Default for DefId

source§

fn default() -> DefId

Returns the “default value” for a type. Read more
source§

impl Hash for DefId

source§

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

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

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

Fields§

§program_id: usize§id: usize

Trait Implementations§

source§

impl Clone for DefId

source§

fn clone(&self) -> DefId

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 DefId

source§

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

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

impl Default for DefId

source§

fn default() -> DefId

Returns the “default value” for a type. Read more
source§

impl Hash for DefId

source§

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

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

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

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

impl Ord for DefId

source§

fn cmp(&self, other: &DefId) -> 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,

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

impl Ord for DefId

source§

fn cmp(&self, other: &DefId) -> 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 DefId

source§

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

source§

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

source§

fn partial_cmp(&self, other: &DefId) -> 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 DefId

source§

fn partial_cmp(&self, other: &DefId) -> 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 DefId

source§

impl Eq for DefId

source§

impl StructuralEq for DefId

source§

impl StructuralPartialEq for DefId

Auto Trait Implementations§

§

impl RefUnwindSafe for DefId

§

impl Send for DefId

§

impl Sync for DefId

§

impl Unpin for DefId

§

impl UnwindSafe for DefId

Blanket Implementations§

source§

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

source§

impl Copy for DefId

source§

impl Eq for DefId

source§

impl StructuralEq for DefId

source§

impl StructuralPartialEq for DefId

Auto Trait Implementations§

§

impl RefUnwindSafe for DefId

§

impl Send for DefId

§

impl Sync for DefId

§

impl Unpin for DefId

§

impl UnwindSafe for DefId

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 6fcc8657f4..d4ac961e6a 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.ModuleBody.html b/edlang_ir/struct.ModuleBody.html index 953012aa2e..e9bd458281 100644 --- a/edlang_ir/struct.ModuleBody.html +++ b/edlang_ir/struct.ModuleBody.html @@ -1,5 +1,5 @@ ModuleBody in edlang_ir - Rust -

Struct edlang_ir::ModuleBody

source ·
pub struct ModuleBody {
+    

Struct edlang_ir::ModuleBody

source ·
pub struct ModuleBody {
     pub module_id: DefId,
     pub parent_ids: Vec<DefId>,
     pub file_id: usize,
@@ -18,7 +18,7 @@
 
§constants: HashSet<DefId>

Constants defined in this module.

§modules: HashSet<DefId>

Submodules defined in this module.

§imports: BTreeMap<String, DefId>

Imported items. symbol -> id

-
§span: Span

Trait Implementations§

source§

impl Clone for ModuleBody

source§

fn clone(&self) -> ModuleBody

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 ModuleBody

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 +
§span: Span

Trait Implementations§

source§

impl Clone for ModuleBody

source§

fn clone(&self) -> ModuleBody

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 ModuleBody

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.Place.html b/edlang_ir/struct.Place.html index a2158e2e57..6fb2769e87 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.ProgramBody.html b/edlang_ir/struct.ProgramBody.html index 78995cc93f..041508d5f2 100644 --- a/edlang_ir/struct.ProgramBody.html +++ b/edlang_ir/struct.ProgramBody.html @@ -1,16 +1,17 @@ -ProgramBody in edlang_ir - Rust -

Struct edlang_ir::ProgramBody

source ·
pub struct ProgramBody {
+ProgramBody in edlang_ir - Rust
+    

Struct edlang_ir::ProgramBody

source ·
pub struct ProgramBody {
     pub top_level_module_names: BTreeMap<String, DefId>,
     pub top_level_modules: Vec<DefId>,
     pub modules: BTreeMap<DefId, ModuleBody>,
     pub functions: BTreeMap<DefId, Body>,
     pub structs: BTreeMap<DefId, AdtBody>,
     pub function_signatures: BTreeMap<DefId, (Vec<TypeInfo>, TypeInfo)>,
+    pub file_names: BTreeMap<usize, String>,
 }

Fields§

§top_level_module_names: BTreeMap<String, DefId>§top_level_modules: Vec<DefId>

The top level modules.

§modules: BTreeMap<DefId, ModuleBody>

All the modules in a flat map.

§functions: BTreeMap<DefId, Body>

This stores all the functions from all modules

§structs: BTreeMap<DefId, AdtBody>§function_signatures: BTreeMap<DefId, (Vec<TypeInfo>, TypeInfo)>

The function signatures.

-

Trait Implementations§

source§

impl Clone for ProgramBody

source§

fn clone(&self) -> ProgramBody

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 ProgramBody

source§

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

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

impl Default for ProgramBody

source§

fn default() -> ProgramBody

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +
§file_names: BTreeMap<usize, String>

Trait Implementations§

source§

impl Clone for ProgramBody

source§

fn clone(&self) -> ProgramBody

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 ProgramBody

source§

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

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

impl Default for ProgramBody

source§

fn default() -> ProgramBody

Returns the “default value” for a type. 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.Statement.html b/edlang_ir/struct.Statement.html index aad3bd17ea..54370a65ab 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 1100d4ac65..6cb8edfe27 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 0ef66fb7ff..7a40690213 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: &Self) -> 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: &Self) -> 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

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

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_modules.html b/edlang_lowering/fn.lower_modules.html index 0b4d8ce447..b5cef082e7 100644 --- a/edlang_lowering/fn.lower_modules.html +++ b/edlang_lowering/fn.lower_modules.html @@ -1,4 +1,2 @@ lower_modules in edlang_lowering - Rust -
pub fn lower_modules(
-    modules: &[Vec<Module>]
-) -> Result<ProgramBody, LoweringError>
\ No newline at end of file +
pub fn lower_modules(modules: &[Module]) -> Result<ProgramBody, LoweringError>
\ No newline at end of file diff --git a/edlang_lowering/fn.lower_type.html b/edlang_lowering/fn.lower_type.html index 3fb9cafaa5..707c52c100 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 49bd674946..e59d596af3 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 c90e820205..448b35fd1b 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.error_to_report.html b/edlang_parser/fn.error_to_report.html index 333437d0d4..1622c566f4 100644 --- a/edlang_parser/fn.error_to_report.html +++ b/edlang_parser/fn.error_to_report.html @@ -1,5 +1,5 @@ error_to_report in edlang_parser - Rust -
pub fn error_to_report<'a>(
+    
pub fn error_to_report<'a>(
     path: &'a str,
     error: &Error
 ) -> Result<Report<'static, (&'a str, Range<usize>)>, Error>
\ No newline at end of file diff --git a/edlang_parser/fn.parse_ast.html b/edlang_parser/fn.parse_ast.html index 9c0bb34c76..c55a5bd9e8 100644 --- a/edlang_parser/fn.parse_ast.html +++ b/edlang_parser/fn.parse_ast.html @@ -1,4 +1,5 @@ parse_ast in edlang_parser - Rust -

Function edlang_parser::parse_ast

source ·
pub fn parse_ast(
-    source: &str
-) -> Result<Vec<Module>, ParseError<usize, Token, LexicalError>>
\ No newline at end of file +

Function edlang_parser::parse_ast

source ·
pub fn parse_ast(
+    source: &str,
+    module_name: &str
+) -> Result<Module, ParseError<usize, Token, LexicalError>>
\ No newline at end of file diff --git a/edlang_parser/fn.print_report.html b/edlang_parser/fn.print_report.html index bcb01a0f0c..9a0001ab5e 100644 --- a/edlang_parser/fn.print_report.html +++ b/edlang_parser/fn.print_report.html @@ -1,5 +1,5 @@ print_report in edlang_parser - Rust -
pub fn print_report<'a>(
+    
pub fn print_report<'a>(
     path: &'a str,
     source: &'a str,
     report: Report<'static, (&'a str, Range<usize>)>
diff --git a/edlang_parser/grammar/grammar/__parse__Modules/struct.ModulesParser.html b/edlang_parser/grammar/grammar/__parse__TopLevelModule/struct.TopLevelModuleParser.html
similarity index 51%
rename from edlang_parser/grammar/grammar/__parse__Modules/struct.ModulesParser.html
rename to edlang_parser/grammar/grammar/__parse__TopLevelModule/struct.TopLevelModuleParser.html
index 2555cbeddc..14023be92e 100644
--- a/edlang_parser/grammar/grammar/__parse__Modules/struct.ModulesParser.html
+++ b/edlang_parser/grammar/grammar/__parse__TopLevelModule/struct.TopLevelModuleParser.html
@@ -1,11 +1,11 @@
 
 
 
-    
+    
     Redirection
 
 
-    

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

- +

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

+ \ No newline at end of file diff --git a/edlang_parser/grammar/grammar/index.html b/edlang_parser/grammar/grammar/index.html index 4f74d1caba..a7017fc94c 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 178bf08a67..b378e1cc00 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","ModulesParser","PathSegmentsParser","UnaryOpParser"],"trait":["__ToTriple"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"struct":["BinaryFirstLvlOpParser","BinarySecondLvlOpParser","BinaryThirdLvlOpParser","ModuleParser","PathSegmentsParser","TopLevelModuleParser","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 f7e5756888..291511c89b 100644 --- a/edlang_parser/grammar/grammar/struct.BinaryFirstLvlOpParser.html +++ b/edlang_parser/grammar/grammar/struct.BinaryFirstLvlOpParser.html @@ -1,8 +1,9 @@ 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<'module_name, __TOKEN: __ToTriple<'module_name>, __TOKENS: IntoIterator<Item = __TOKEN>>( &self, + module_name: &'module_name str, __tokens0: __TOKENS -) -> Result<BinaryOp, ParseError<usize, Token, LexicalError>>

Trait Implementations§

source§

impl Default for BinaryFirstLvlOpParser

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Trait Implementations§

source§

impl Default for BinaryFirstLvlOpParser

source§

fn default() -> Self

Returns the “default value” for a type. 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_parser/grammar/grammar/struct.BinarySecondLvlOpParser.html b/edlang_parser/grammar/grammar/struct.BinarySecondLvlOpParser.html index d6bea8b2fb..ec46e275ad 100644 --- a/edlang_parser/grammar/grammar/struct.BinarySecondLvlOpParser.html +++ b/edlang_parser/grammar/grammar/struct.BinarySecondLvlOpParser.html @@ -1,8 +1,9 @@ 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<'module_name, __TOKEN: __ToTriple<'module_name>, __TOKENS: IntoIterator<Item = __TOKEN>>( &self, + module_name: &'module_name str, __tokens0: __TOKENS -) -> Result<BinaryOp, ParseError<usize, Token, LexicalError>>

Trait Implementations§

source§

impl Default for BinarySecondLvlOpParser

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Trait Implementations§

source§

impl Default for BinarySecondLvlOpParser

source§

fn default() -> Self

Returns the “default value” for a type. 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_parser/grammar/grammar/struct.BinaryThirdLvlOpParser.html b/edlang_parser/grammar/grammar/struct.BinaryThirdLvlOpParser.html index 6e5651ac10..db82db239a 100644 --- a/edlang_parser/grammar/grammar/struct.BinaryThirdLvlOpParser.html +++ b/edlang_parser/grammar/grammar/struct.BinaryThirdLvlOpParser.html @@ -1,8 +1,9 @@ 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<'module_name, __TOKEN: __ToTriple<'module_name>, __TOKENS: IntoIterator<Item = __TOKEN>>( &self, + module_name: &'module_name str, __tokens0: __TOKENS -) -> Result<BinaryOp, ParseError<usize, Token, LexicalError>>

Trait Implementations§

source§

impl Default for BinaryThirdLvlOpParser

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Trait Implementations§

source§

impl Default for BinaryThirdLvlOpParser

source§

fn default() -> Self

Returns the “default value” for a type. 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_parser/grammar/grammar/struct.ModuleParser.html b/edlang_parser/grammar/grammar/struct.ModuleParser.html index b91a6a8c3d..3bd3be14d4 100644 --- a/edlang_parser/grammar/grammar/struct.ModuleParser.html +++ b/edlang_parser/grammar/grammar/struct.ModuleParser.html @@ -1,8 +1,9 @@ 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<'module_name, __TOKEN: __ToTriple<'module_name>, __TOKENS: IntoIterator<Item = __TOKEN>>( &self, + module_name: &'module_name str, __tokens0: __TOKENS -) -> Result<Module, ParseError<usize, Token, LexicalError>>

Trait Implementations§

source§

impl Default for ModuleParser

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Trait Implementations§

source§

impl Default for ModuleParser

source§

fn default() -> Self

Returns the “default value” for a type. 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_parser/grammar/grammar/struct.PathSegmentsParser.html b/edlang_parser/grammar/grammar/struct.PathSegmentsParser.html index a1d6c8a0e8..cf67e62594 100644 --- a/edlang_parser/grammar/grammar/struct.PathSegmentsParser.html +++ b/edlang_parser/grammar/grammar/struct.PathSegmentsParser.html @@ -1,8 +1,9 @@ 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<'module_name, __TOKEN: __ToTriple<'module_name>, __TOKENS: IntoIterator<Item = __TOKEN>>( &self, + module_name: &'module_name str, __tokens0: __TOKENS -) -> Result<Vec<PathSegment>, ParseError<usize, Token, LexicalError>>

Trait Implementations§

source§

impl Default for PathSegmentsParser

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Trait Implementations§

source§

impl Default for PathSegmentsParser

source§

fn default() -> Self

Returns the “default value” for a type. 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_parser/grammar/grammar/struct.ModulesParser.html b/edlang_parser/grammar/grammar/struct.TopLevelModuleParser.html similarity index 51% rename from edlang_parser/grammar/grammar/struct.ModulesParser.html rename to edlang_parser/grammar/grammar/struct.TopLevelModuleParser.html index 6869c85c81..90db0ce062 100644 --- a/edlang_parser/grammar/grammar/struct.ModulesParser.html +++ b/edlang_parser/grammar/grammar/struct.TopLevelModuleParser.html @@ -1,8 +1,9 @@ -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>>( +TopLevelModuleParser in edlang_parser::grammar::grammar - Rust +
pub struct TopLevelModuleParser { /* private fields */ }

Implementations§

source§

impl TopLevelModuleParser

source

pub fn new() -> TopLevelModuleParser

source

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

Trait Implementations§

source§

impl Default for ModulesParser

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Trait Implementations§

source§

impl Default for TopLevelModuleParser

source§

fn default() -> Self

Returns the “default value” for a type. 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_parser/grammar/grammar/struct.UnaryOpParser.html b/edlang_parser/grammar/grammar/struct.UnaryOpParser.html index b44f328606..57b7e3a0ae 100644 --- a/edlang_parser/grammar/grammar/struct.UnaryOpParser.html +++ b/edlang_parser/grammar/grammar/struct.UnaryOpParser.html @@ -1,8 +1,9 @@ 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<'module_name, __TOKEN: __ToTriple<'module_name>, __TOKENS: IntoIterator<Item = __TOKEN>>( &self, + module_name: &'module_name str, __tokens0: __TOKENS -) -> Result<UnaryOp, ParseError<usize, Token, LexicalError>>

Trait Implementations§

source§

impl Default for UnaryOpParser

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Trait Implementations§

source§

impl Default for UnaryOpParser

source§

fn default() -> Self

Returns the “default value” for a type. 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_parser/grammar/grammar/trait.__ToTriple.html b/edlang_parser/grammar/grammar/trait.__ToTriple.html index 88ec64047f..e0b384ce25 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 {
+__ToTriple in edlang_parser::grammar::grammar - Rust
+    
pub trait __ToTriple<'module_name> {
     // 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<'module_name> __ToTriple<'module_name> for (usize, Token, usize)

source§

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

source§

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

Implementors§

\ No newline at end of file diff --git a/edlang_parser/index.html b/edlang_parser/index.html index de23bc9eb8..07e6285c7b 100644 --- a/edlang_parser/index.html +++ b/edlang_parser/index.html @@ -1,3 +1,3 @@ edlang_parser - Rust -
\ No newline at end of file +
\ No newline at end of file diff --git a/search-index.js b/search-index.js index 94b3da79bb..8b51b4ddb5 100644 --- a/search-index.js +++ b/search-index.js @@ -21,9 +21,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":"CHH","n":["codegen","compile","compile"],"q":[[0,"edlang_codegen_llvm"],[2,"edlang_codegen_llvm::codegen"],[3,"edlang_session"],[4,"edlang_ir"],[5,"std::path"],[6,"core::error"],[7,"alloc::boxed"],[8,"core::result"]],"d":["","",""],"i":[0,0,0],"f":[0,[[1,2],[[6,[3,[5,[4]]]]]],[[1,2],[[6,[3,[5,[4]]]]]]],"c":[],"p":[[5,"Session",3],[5,"ProgramBody",4],[5,"PathBuf",5],[10,"Error",6],[5,"Box",7],[6,"Result",8]],"b":[]}],\ ["edlang_driver",{"doc":"","t":"FOONNNNNNHONNNNNONOOCOHOOOONNNNNHH","n":["CompilerArgs","asm","ast","augment_args","augment_args_for_update","borrow","borrow_mut","command","command_for_update","compile","debug_info","fmt","from","from_arg_matches","from_arg_matches_mut","group_id","input","into","ir","library","linker","llvm","main","object","optlevel","output","release","try_from","try_into","type_id","update_from_arg_matches","update_from_arg_matches_mut","link_binary","link_shared_lib"],"q":[[0,"edlang_driver"],[32,"edlang_driver::linker"],[34,"clap_builder::builder::command"],[35,"std::path"],[36,"anyhow"],[37,"core::fmt"],[38,"core::fmt"],[39,"clap_builder"],[40,"core::result"],[41,"clap_builder::util::id"],[42,"core::option"],[43,"core::any"],[44,"std::path"]],"d":["","Output asm","Print the edlang AST","","","","","","","","Always add debug info","","Returns the argument unchanged.","","","","The input file.","Calls U::from(self).","Print the edlang IR","Build as a library.","","Output llvm ir","","Output a object file","Set the optimization level, 0,1,2,3","The output file.","Build for release with all optimizations.","","","","","","",""],"i":[0,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,0,2,0,2,2,2,2,2,2,2,2,2,0,0],"f":[0,0,0,[1,1],[1,1],[-1,-2,[],[]],[-1,-2,[],[]],[[],1],[[],1],[2,[[4,[3]]]],0,[[2,5],6],[-1,-1,[]],[7,[[9,[2,8]]]],[7,[[9,[2,8]]]],[[],[[11,[10]]]],0,[-1,-2,[],[]],0,0,0,0,[[],[[4,[12]]]],0,0,0,0,[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,13,[]],[[2,7],[[9,[12,8]]]],[[2,7],[[9,[12,8]]]],[[[14,[3]],15],[[16,[12]]]],[[[14,[3]],15],[[16,[12]]]]],"c":[],"p":[[5,"Command",34],[5,"CompilerArgs",0],[5,"PathBuf",35],[8,"Result",36],[5,"Formatter",37],[8,"Result",37],[5,"ArgMatches",38],[8,"Error",39],[6,"Result",40],[5,"Id",41],[6,"Option",42],[1,"tuple"],[5,"TypeId",43],[1,"slice"],[5,"Path",35],[8,"Result",44]],"b":[]}],\ -["edlang_ir",{"doc":"","t":"PFFPPPFGPPPPFPPPPPPPFGGPPFFPPPPPPPPPGPPPPPPPPPPPPPPPGPPPPFGPGPFPPPPPPGPFGFPGPPPPPPPFGPPPPPPFFPPGFGPPPPPPPPPPPGGPPPPPPGPONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOONNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNOONNOOOOOOOOOOOOOOOONONNNNNNOOCOOOOOOOOOOOOOONOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOFNNNNNONNNNNNHNONHNNNN","n":["Add","AdtBody","AdtVariant","And","Arg","Assign","BasicBlock","BinOp","BinOp","BitAnd","BitOr","BitXor","Body","Bool","Bool","Branch","Call","Cast","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","file_id","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_float","is_integer","is_pub","is_pub","is_signed_integer","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"],[573,"edlang_ir::PlaceElem"],[575,"edlang_ir::Terminator"],[581,"edlang_ir::scalar_int"],[603,"core::cmp"],[604,"core::fmt"],[605,"core::fmt"],[606,"alloc::string"],[607,"core::hash"],[608,"edlang_span"],[609,"core::option"],[610,"core::result"],[611,"core::any"],[612,"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,24,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,3,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,17,5,6,17,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,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],0,[[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],[17,34],0,0,[17,34],[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",603],[1,"bool"],[5,"Formatter",604],[8,"Result",604],[1,"array"],[5,"SmallVec",605],[5,"String",606],[10,"Hasher",607],[5,"Span",608],[6,"Option",609],[6,"Result",610],[5,"TypeId",611],[5,"ScalarInt",581],[1,"u64"],[1,"u128"],[1,"i128"],[10,"Into",612],[15,"Field",573],[15,"Index",573],[15,"Call",575],[15,"SwitchInt",575]],"b":[[282,"impl-Display-for-TypeKind"],[283,"impl-Debug-for-TypeKind"]]}],\ -["edlang_lowering",{"doc":"","t":"CHHPPPPGPPPPPNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","n":["errors","lower_modules","lower_type","BorrowNotMutable","FunctionNotFound","IdNotFound","ImportNotFound","LoweringError","ModuleNotFound","NotYetImplemented","UnexpectedType","UnrecognizedType","UseOfUndeclaredVariable","borrow","borrow_mut","clone","clone_into","fmt","fmt","from","into","to_owned","to_string","try_from","try_into","type_id","expected","file_id","file_id","file_id","file_id","file_id","file_id","file_id","file_id","file_id","found","function","id","import_span","message","module","module_span","name","name","name","span","span","span","span","span","span","span","span","symbol","type_span"],"q":[[0,"edlang_lowering"],[3,"edlang_lowering::errors"],[26,"edlang_lowering::errors::LoweringError"],[56,"edlang_ast"],[57,"alloc::vec"],[58,"edlang_ir"],[59,"core::result"],[60,"edlang_ast"],[61,"core::fmt"],[62,"core::any"]],"d":["","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,5,5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,15,16,17,18,19,20,21,22,15,23,15,17,21,18,22,16,18,19,20,23,16,17,19,20,21,22,15,23,18,19],"f":[0,[[[3,[[2,[1]]]]],[[6,[4,5]]]],0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[5,5],[[-1,-2],10,[],[]],[[5,11],12],[[5,11],12],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,13,[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,14,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"c":[],"p":[[5,"Module",56],[5,"Vec",57],[1,"slice"],[5,"ProgramBody",58],[6,"LoweringError",3],[6,"Result",59],[5,"Type",56],[5,"DefId",58],[5,"TypeInfo",58],[1,"tuple"],[5,"Formatter",60],[8,"Result",60],[5,"String",61],[5,"TypeId",62],[15,"UnexpectedType",26],[15,"ModuleNotFound",26],[15,"FunctionNotFound",26],[15,"ImportNotFound",26],[15,"BorrowNotMutable",26],[15,"UnrecognizedType",26],[15,"IdNotFound",26],[15,"NotYetImplemented",26],[15,"UseOfUndeclaredVariable",26]],"b":[[17,"impl-Debug-for-LoweringError"],[18,"impl-Display-for-LoweringError"]]}],\ -["edlang_parser",{"doc":"","t":"CHCCHHCIPPPPPOOOOOOOCFFFFFFFKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNPPFGPINNNNNNNNNNNNNNNNNNNNNNNPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPGPPPPPPPPPPPPPPPPPPPPPPPGPNNNNNNNNNNNNNNNNNNNNNNNNNNNN","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","default","default","default","default","default","default","default","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","KeywordAs","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"],[100,"edlang_parser::lexer"],[129,"edlang_parser::tokens"],[214,"core::ops::range"],[215,"ariadne"],[216,"std::io::error"],[217,"core::result"],[218,"edlang_ast"],[219,"alloc::vec"],[220,"lalrpop_util"],[221,"edlang_ast"],[222,"edlang_ast"],[223,"core::fmt"],[224,"core::fmt"],[225,"alloc::string"],[226,"core::convert"],[227,"core::num::error"],[228,"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,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,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,[],[]],[[],14],[[],15],[[],16],[[],17],[[],18],[[],19],[[],20],[-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,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],[36,33],[-1,-1,[]],[-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",214],[1,"tuple"],[5,"Report",215],[5,"Error",216],[6,"Result",217],[5,"Module",218],[5,"Vec",219],[6,"Token",129],[6,"LexicalError",100],[6,"ParseError",220],[5,"BinaryFirstLvlOpParser",21],[5,"BinarySecondLvlOpParser",21],[5,"BinaryThirdLvlOpParser",21],[5,"ModuleParser",21],[5,"ModulesParser",21],[5,"PathSegmentsParser",21],[5,"UnaryOpParser",21],[6,"BinaryOp",218],[10,"__ToTriple",21],[17,"Item"],[10,"IntoIterator",221],[6,"PathSegment",218],[6,"UnaryOp",218],[5,"TypeId",222],[5,"Formatter",223],[8,"Result",223],[5,"Lexer",100],[6,"Option",224],[5,"String",225],[6,"LexingError",129],[1,"bool"],[6,"Infallible",226],[5,"ParseIntError",227],[5,"Lexer",228],[15,"User",13],[15,"UnrecognizedEof",13],[15,"UnrecognizedToken",13],[15,"InvalidToken",13],[15,"ExtraToken",13],[8,"Spanned",100]],"b":[[112,"impl-Debug-for-LexicalError"],[113,"impl-Display-for-LexicalError"],[199,"impl-From%3CInfallible%3E-for-LexingError"],[200,"impl-From%3CParseIntError%3E-for-LexingError"]]}],\ +["edlang_ir",{"doc":"","t":"PFFPPPFGPPPPFPPPPPPPFGGPPFFPPPPPPPPPGPPPPPPPPPPPPPPPGPPPPFGPGPFPPPPPPGPFGFPGPPPPPPPFGPPPPPPFFPPGFGPPPPPPPPPPPGGPPPPPPGPONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOONNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNOONNOOOOOOOOOOOOOOOONONNNNNNOOCOOOOOOOOOOOOOONOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOFNNNNNONNNNNNHNONHNNNN","n":["Add","AdtBody","AdtVariant","And","Arg","Assign","BasicBlock","BinOp","BinOp","BitAnd","BitOr","BitXor","Body","Bool","Bool","Branch","Call","Cast","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","file_id","file_names","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_float","is_integer","is_pub","is_pub","is_signed_integer","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"],[574,"edlang_ir::PlaceElem"],[576,"edlang_ir::Terminator"],[582,"edlang_ir::scalar_int"],[604,"core::cmp"],[605,"core::fmt"],[606,"core::fmt"],[607,"alloc::string"],[608,"core::hash"],[609,"edlang_span"],[610,"core::option"],[611,"core::result"],[612,"core::any"],[613,"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,24,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,3,2,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,17,5,6,17,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,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],0,0,[[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],[17,34],0,0,[17,34],[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",604],[1,"bool"],[5,"Formatter",605],[8,"Result",605],[1,"array"],[5,"SmallVec",606],[5,"String",607],[10,"Hasher",608],[5,"Span",609],[6,"Option",610],[6,"Result",611],[5,"TypeId",612],[5,"ScalarInt",582],[1,"u64"],[1,"u128"],[1,"i128"],[10,"Into",613],[15,"Field",574],[15,"Index",574],[15,"Call",576],[15,"SwitchInt",576]],"b":[[283,"impl-Display-for-TypeKind"],[284,"impl-Debug-for-TypeKind"]]}],\ +["edlang_lowering",{"doc":"","t":"CHHPPPPGPPPPPNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","n":["errors","lower_modules","lower_type","BorrowNotMutable","FunctionNotFound","IdNotFound","ImportNotFound","LoweringError","ModuleNotFound","NotYetImplemented","UnexpectedType","UnrecognizedType","UseOfUndeclaredVariable","borrow","borrow_mut","clone","clone_into","fmt","fmt","from","into","to_owned","to_string","try_from","try_into","type_id","expected","file_id","file_id","file_id","file_id","file_id","file_id","file_id","file_id","file_id","found","function","id","import_span","message","module","module_span","name","name","name","span","span","span","span","span","span","span","span","symbol","type_span"],"q":[[0,"edlang_lowering"],[3,"edlang_lowering::errors"],[26,"edlang_lowering::errors::LoweringError"],[56,"edlang_ast"],[57,"edlang_ir"],[58,"core::result"],[59,"edlang_ast"],[60,"core::fmt"],[61,"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,4,14,15,16,17,18,19,20,21,14,22,14,16,20,17,21,15,17,18,19,22,15,16,18,19,20,21,14,22,17,18],"f":[0,[[[2,[1]]],[[5,[3,4]]]],0,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,0,0,0,0,0,0,0,0,0,0,0],"c":[],"p":[[5,"Module",56],[1,"slice"],[5,"ProgramBody",57],[6,"LoweringError",3],[6,"Result",58],[5,"Type",56],[5,"DefId",57],[5,"TypeInfo",57],[1,"tuple"],[5,"Formatter",59],[8,"Result",59],[5,"String",60],[5,"TypeId",61],[15,"UnexpectedType",26],[15,"ModuleNotFound",26],[15,"FunctionNotFound",26],[15,"ImportNotFound",26],[15,"BorrowNotMutable",26],[15,"UnrecognizedType",26],[15,"IdNotFound",26],[15,"NotYetImplemented",26],[15,"UseOfUndeclaredVariable",26]],"b":[[17,"impl-Debug-for-LoweringError"],[18,"impl-Display-for-LoweringError"]]}],\ +["edlang_parser",{"doc":"","t":"CHCCHHCIPPPPPOOOOOOOCFFFFFFFKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNPPFGPINNNNNNNNNNNNNNNNNNNNNNNPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPGPPPPPPPPPPPPPPPPPPPPPPPGPNNNNNNNNNNNNNNNNNNNNNNNNNNNN","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","TopLevelModuleParser","UnaryOpParser","__ToTriple","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","default","default","default","default","default","default","default","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","KeywordAs","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"],[100,"edlang_parser::lexer"],[129,"edlang_parser::tokens"],[214,"core::ops::range"],[215,"ariadne"],[216,"std::io::error"],[217,"core::result"],[218,"edlang_ast"],[219,"lalrpop_util"],[220,"edlang_ast"],[221,"edlang_ast"],[222,"edlang_ast"],[223,"core::fmt"],[224,"core::fmt"],[225,"alloc::string"],[226,"core::convert"],[227,"core::num::error"],[228,"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,13,14,15,16,17,18,19,13,14,15,16,17,18,19,13,14,15,16,17,18,19,13,14,15,16,17,18,19,13,14,15,16,17,18,19,13,14,15,16,17,18,19,13,14,15,16,17,18,19,21,13,14,15,16,17,18,19,13,14,15,16,17,18,19,13,14,15,16,17,18,19,43,11,0,0,43,0,30,11,30,11,11,11,11,11,30,11,30,11,30,30,30,11,11,30,11,30,11,30,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,10,0,10,10,33,10,10,10,10,10,10,10,10,10,10,10,10,10,10,33,10,10,10,10,10,0,10,33,10,33,10,33,10,33,10,33,33,10,33,10,33,33,33,10,33,10,10,33,10,33,10,33,10,33,10],"f":[0,[[1,2],[[8,[[6,[[5,[1,[4,[3]]]]]],7]]]],0,0,[[1,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,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,[],[]],[[],13],[[],14],[[],15],[[],16],[[],17],[[],18],[[],19],[-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,[],[]],[[],13],[[],14],[[],15],[[],16],[[],17],[[],18],[[],19],[[13,1,-2],[[8,[20,[12,[3,10,11]]]]],21,[[23,[],[[22,[-1]]]]]],[[14,1,-2],[[8,[20,[12,[3,10,11]]]]],21,[[23,[],[[22,[-1]]]]]],[[15,1,-2],[[8,[20,[12,[3,10,11]]]]],21,[[23,[],[[22,[-1]]]]]],[[16,1,-2],[[8,[9,[12,[3,10,11]]]]],21,[[23,[],[[22,[-1]]]]]],[[17,1,-2],[[8,[[25,[24]],[12,[3,10,11]]]]],21,[[23,[],[[22,[-1]]]]]],[[18,1,-2],[[8,[9,[12,[3,10,11]]]]],21,[[23,[],[[22,[-1]]]]]],[[19,1,-2],[[8,[26,[12,[3,10,11]]]]],21,[[23,[],[[22,[-1]]]]]],[21,[[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,[[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,[],[]],[11,11],[[-1,-2],5,[],[]],[[11,28],29],[[11,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,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[33,33],[10,10],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[],33],[[33,33],34],[[10,10],34],[[33,28],29],[[10,28],29],[35,33],[-1,-1,[]],[36,33],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[37,[10]]],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",214],[1,"tuple"],[5,"Report",215],[5,"Error",216],[6,"Result",217],[5,"Module",218],[6,"Token",129],[6,"LexicalError",100],[6,"ParseError",219],[5,"BinaryFirstLvlOpParser",21],[5,"BinarySecondLvlOpParser",21],[5,"BinaryThirdLvlOpParser",21],[5,"ModuleParser",21],[5,"PathSegmentsParser",21],[5,"TopLevelModuleParser",21],[5,"UnaryOpParser",21],[6,"BinaryOp",218],[10,"__ToTriple",21],[17,"Item"],[10,"IntoIterator",220],[6,"PathSegment",218],[5,"Vec",221],[6,"UnaryOp",218],[5,"TypeId",222],[5,"Formatter",223],[8,"Result",223],[5,"Lexer",100],[6,"Option",224],[5,"String",225],[6,"LexingError",129],[1,"bool"],[6,"Infallible",226],[5,"ParseIntError",227],[5,"Lexer",228],[15,"User",13],[15,"UnrecognizedEof",13],[15,"UnrecognizedToken",13],[15,"InvalidToken",13],[15,"ExtraToken",13],[8,"Spanned",100]],"b":[[112,"impl-Debug-for-LexicalError"],[113,"impl-Display-for-LexicalError"],[199,"impl-From%3CInfallible%3E-for-LexingError"],[201,"impl-From%3CParseIntError%3E-for-LexingError"]]}],\ ["edlang_session",{"doc":"","t":"PGPPPPPGFNNNNNNNNNNNNONNONNNNNNNNNNNNOOOOOONNNNNNNNNNNN","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_paths","fmt","fmt","fmt","from","from","from","get_platform_library_ext","hash","hash","into","into","into","library","optlevel","output_asm","output_file","output_llvm","sources","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"],[55,"core::fmt"],[56,"core::fmt"],[57,"core::result"],[58,"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).","","","","","","","","","","","","","","","","","",""],"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,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,[-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",55],[8,"Result",55],[1,"str"],[10,"Hasher",56],[6,"Result",57],[5,"TypeId",58]],"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":[]}],\ ["edlangc",{"doc":"","t":"H","n":["main"],"q":[[0,"edlangc"],[1,"core::error"],[2,"alloc::boxed"],[3,"core::result"]],"d":[""],"i":[0],"f":[[[],[[4,[1,[3,[2]]]]]]],"c":[],"p":[[1,"tuple"],[10,"Error",1],[5,"Box",2],[6,"Result",3]],"b":[]}],\ diff --git a/src/edb/main.rs.html b/src/edb/main.rs.html index ad1d4a7b22..d0c5d4e419 100644 --- a/src/edb/main.rs.html +++ b/src/edb/main.rs.html @@ -281,18 +281,6 @@ 280 281 282 -283 -284 -285 -286 -287 -288 -289 -290 -291 -292 -293 -294
use std::{collections::HashMap, fs::File, io::Read, path::PathBuf, time::Instant};
 
 use anyhow::{bail, Context, Result};
@@ -401,7 +389,7 @@
 
             std::fs::write(config_path, toml::to_string_pretty(&config)?)
                 .context("failed to write Ed.toml")?;
-            std::fs::write(path.join(".gitignore"), "/target-ed\n")
+            std::fs::write(path.join(".gitignore"), "/build\n")
                 .context("failed to write .gitignore")?;
             std::fs::write(path.join(".gitattributes"), "*.ed linguist-language=Rust\n")
                 .context("failed to write .gitattributes")?;
@@ -409,30 +397,18 @@
             if bin {
                 std::fs::write(
                     path.join("src").join("main.ed"),
-                    format!(
-                        r#"
-mod {} {{
-    pub fn main() -> i32 {{
-        return 0;
-    }}
-}}"#,
-                        name
-                    ),
+                    r#"pub fn main() -> i32 {{
+    return 0;
+}"#,
                 )?;
             }
 
             if lib {
                 std::fs::write(
                     path.join("src").join("lib.ed"),
-                    format!(
-                        r#"
-mod {} {{
-    pub fn hello_world() -> i32 {{
-        return 0;
-    }}
-}}"#,
-                        name
-                    ),
+                    r#"pub fn main() -> i32 {{
+    return 0;
+}"#,
                 )?;
             }
 
@@ -502,7 +478,7 @@
             );
 
             let src_dir = base_dir.join("src");
-            let target_dir = base_dir.join("target-ed");
+            let target_dir = base_dir.join("build");
 
             if !target_dir.exists() {
                 std::fs::create_dir_all(&target_dir)?;
diff --git a/src/edlang_driver/lib.rs.html b/src/edlang_driver/lib.rs.html
index 7678991190..81d9f2f3e7 100644
--- a/src/edlang_driver/lib.rs.html
+++ b/src/edlang_driver/lib.rs.html
@@ -186,6 +186,9 @@
 185
 186
 187
+188
+189
+190
 
use std::{path::PathBuf, time::Instant};
 
 use anyhow::Result;
@@ -267,7 +270,7 @@
 
 pub fn compile(args: &CompilerArgs) -> Result<PathBuf> {
     let mut files = Vec::new();
-    for entry in WalkDir::new(&args.input) {
+    for entry in WalkDir::new(&args.input).sort_by_file_name() {
         let entry = entry?;
         if let Some(ext) = entry.path().extension() {
             if ext.eq_ignore_ascii_case("ed") {
@@ -287,10 +290,13 @@
     for path in files {
         let source = std::fs::read_to_string(&path)?;
 
-        let modules_ast = edlang_parser::parse_ast(&source);
+        let module_ast = edlang_parser::parse_ast(
+            &source,
+            &path.file_stem().expect("no file stem").to_string_lossy(),
+        );
 
-        let modules_temp = match modules_ast {
-            Ok(modules) => modules,
+        let module_temp = match module_ast {
+            Ok(module) => module,
             Err(error) => {
                 let path = path.display().to_string();
                 let report = edlang_parser::error_to_report(&path, &error)?;
@@ -298,7 +304,7 @@
                 std::process::exit(1)
             }
         };
-        modules.push((path, source, modules_temp));
+        modules.push((path, source, module_temp));
     }
 
     let session = Session {
diff --git a/src/edlang_ir/lib.rs.html b/src/edlang_ir/lib.rs.html
index 8c7818c62c..8614acba0b 100644
--- a/src/edlang_ir/lib.rs.html
+++ b/src/edlang_ir/lib.rs.html
@@ -553,6 +553,7 @@
 552
 553
 554
+555
 
// Based on a cfg
 
 use std::{
@@ -588,6 +589,7 @@
     pub structs: BTreeMap<DefId, AdtBody>,
     /// The function signatures.
     pub function_signatures: BTreeMap<DefId, (Vec<TypeInfo>, TypeInfo)>,
+    pub file_names: BTreeMap<usize, String>,
 }
 
 #[derive(Debug, Clone)]
diff --git a/src/edlang_lowering/lib.rs.html b/src/edlang_lowering/lib.rs.html
index 217ce46aa2..5e63622f5c 100644
--- a/src/edlang_lowering/lib.rs.html
+++ b/src/edlang_lowering/lib.rs.html
@@ -1310,12 +1310,6 @@
 1309
 1310
 1311
-1312
-1313
-1314
-1315
-1316
-1317
 
use std::collections::HashMap;
 
 use ast::{BinaryOp, ModuleStatement, Span, WhileStmt};
@@ -1333,33 +1327,27 @@
 pub mod errors;
 mod prepass;
 
-pub fn lower_modules(modules: &[Vec<ast::Module>]) -> Result<ProgramBody, LoweringError> {
+pub fn lower_modules(modules: &[ast::Module]) -> Result<ProgramBody, LoweringError> {
     let mut ctx = BuildCtx::default();
 
     // resolve symbols
-    for (file_id, modules) in modules.iter().enumerate() {
-        for module in modules {
-            ctx = prepass::prepass_module(ctx, module, file_id)?;
-        }
+    for (file_id, module) in modules.iter().enumerate() {
+        ctx = prepass::prepass_module(ctx, module, file_id)?;
     }
 
     // resolve imports
-    for (file_id, modules) in modules.iter().enumerate() {
-        for module in modules {
-            ctx = prepass::prepass_imports(ctx, module, file_id)?;
-        }
+    for (file_id, module) in modules.iter().enumerate() {
+        ctx = prepass::prepass_imports(ctx, module, file_id)?;
     }
 
-    for modules in modules {
-        for mod_def in modules {
-            let id = *ctx
-                .body
-                .top_level_module_names
-                .get(&mod_def.name.name)
-                .expect("module should exist");
+    for mod_def in modules {
+        let id = *ctx
+            .body
+            .top_level_module_names
+            .get(&mod_def.name.name)
+            .expect("module should exist");
 
-            ctx = lower_module(ctx, mod_def, id)?;
-        }
+        ctx = lower_module(ctx, mod_def, id)?;
     }
 
     Ok(ctx.body)
diff --git a/src/edlang_parser/home/runner/work/edlang/edlang/target/debug/build/edlang_parser-a380a731733183eb/out/grammar.rs.html b/src/edlang_parser/home/runner/work/edlang/edlang/target/debug/build/edlang_parser-a380a731733183eb/out/grammar.rs.html
index a55da7bc67..6b766ede4f 100644
--- a/src/edlang_parser/home/runner/work/edlang/edlang/target/debug/build/edlang_parser-a380a731733183eb/out/grammar.rs.html
+++ b/src/edlang_parser/home/runner/work/edlang/edlang/target/debug/build/edlang_parser-a380a731733183eb/out/grammar.rs.html
@@ -335868,8 +335868,21286 @@
 335867
 335868
 335869
+335870
+335871
+335872
+335873
+335874
+335875
+335876
+335877
+335878
+335879
+335880
+335881
+335882
+335883
+335884
+335885
+335886
+335887
+335888
+335889
+335890
+335891
+335892
+335893
+335894
+335895
+335896
+335897
+335898
+335899
+335900
+335901
+335902
+335903
+335904
+335905
+335906
+335907
+335908
+335909
+335910
+335911
+335912
+335913
+335914
+335915
+335916
+335917
+335918
+335919
+335920
+335921
+335922
+335923
+335924
+335925
+335926
+335927
+335928
+335929
+335930
+335931
+335932
+335933
+335934
+335935
+335936
+335937
+335938
+335939
+335940
+335941
+335942
+335943
+335944
+335945
+335946
+335947
+335948
+335949
+335950
+335951
+335952
+335953
+335954
+335955
+335956
+335957
+335958
+335959
+335960
+335961
+335962
+335963
+335964
+335965
+335966
+335967
+335968
+335969
+335970
+335971
+335972
+335973
+335974
+335975
+335976
+335977
+335978
+335979
+335980
+335981
+335982
+335983
+335984
+335985
+335986
+335987
+335988
+335989
+335990
+335991
+335992
+335993
+335994
+335995
+335996
+335997
+335998
+335999
+336000
+336001
+336002
+336003
+336004
+336005
+336006
+336007
+336008
+336009
+336010
+336011
+336012
+336013
+336014
+336015
+336016
+336017
+336018
+336019
+336020
+336021
+336022
+336023
+336024
+336025
+336026
+336027
+336028
+336029
+336030
+336031
+336032
+336033
+336034
+336035
+336036
+336037
+336038
+336039
+336040
+336041
+336042
+336043
+336044
+336045
+336046
+336047
+336048
+336049
+336050
+336051
+336052
+336053
+336054
+336055
+336056
+336057
+336058
+336059
+336060
+336061
+336062
+336063
+336064
+336065
+336066
+336067
+336068
+336069
+336070
+336071
+336072
+336073
+336074
+336075
+336076
+336077
+336078
+336079
+336080
+336081
+336082
+336083
+336084
+336085
+336086
+336087
+336088
+336089
+336090
+336091
+336092
+336093
+336094
+336095
+336096
+336097
+336098
+336099
+336100
+336101
+336102
+336103
+336104
+336105
+336106
+336107
+336108
+336109
+336110
+336111
+336112
+336113
+336114
+336115
+336116
+336117
+336118
+336119
+336120
+336121
+336122
+336123
+336124
+336125
+336126
+336127
+336128
+336129
+336130
+336131
+336132
+336133
+336134
+336135
+336136
+336137
+336138
+336139
+336140
+336141
+336142
+336143
+336144
+336145
+336146
+336147
+336148
+336149
+336150
+336151
+336152
+336153
+336154
+336155
+336156
+336157
+336158
+336159
+336160
+336161
+336162
+336163
+336164
+336165
+336166
+336167
+336168
+336169
+336170
+336171
+336172
+336173
+336174
+336175
+336176
+336177
+336178
+336179
+336180
+336181
+336182
+336183
+336184
+336185
+336186
+336187
+336188
+336189
+336190
+336191
+336192
+336193
+336194
+336195
+336196
+336197
+336198
+336199
+336200
+336201
+336202
+336203
+336204
+336205
+336206
+336207
+336208
+336209
+336210
+336211
+336212
+336213
+336214
+336215
+336216
+336217
+336218
+336219
+336220
+336221
+336222
+336223
+336224
+336225
+336226
+336227
+336228
+336229
+336230
+336231
+336232
+336233
+336234
+336235
+336236
+336237
+336238
+336239
+336240
+336241
+336242
+336243
+336244
+336245
+336246
+336247
+336248
+336249
+336250
+336251
+336252
+336253
+336254
+336255
+336256
+336257
+336258
+336259
+336260
+336261
+336262
+336263
+336264
+336265
+336266
+336267
+336268
+336269
+336270
+336271
+336272
+336273
+336274
+336275
+336276
+336277
+336278
+336279
+336280
+336281
+336282
+336283
+336284
+336285
+336286
+336287
+336288
+336289
+336290
+336291
+336292
+336293
+336294
+336295
+336296
+336297
+336298
+336299
+336300
+336301
+336302
+336303
+336304
+336305
+336306
+336307
+336308
+336309
+336310
+336311
+336312
+336313
+336314
+336315
+336316
+336317
+336318
+336319
+336320
+336321
+336322
+336323
+336324
+336325
+336326
+336327
+336328
+336329
+336330
+336331
+336332
+336333
+336334
+336335
+336336
+336337
+336338
+336339
+336340
+336341
+336342
+336343
+336344
+336345
+336346
+336347
+336348
+336349
+336350
+336351
+336352
+336353
+336354
+336355
+336356
+336357
+336358
+336359
+336360
+336361
+336362
+336363
+336364
+336365
+336366
+336367
+336368
+336369
+336370
+336371
+336372
+336373
+336374
+336375
+336376
+336377
+336378
+336379
+336380
+336381
+336382
+336383
+336384
+336385
+336386
+336387
+336388
+336389
+336390
+336391
+336392
+336393
+336394
+336395
+336396
+336397
+336398
+336399
+336400
+336401
+336402
+336403
+336404
+336405
+336406
+336407
+336408
+336409
+336410
+336411
+336412
+336413
+336414
+336415
+336416
+336417
+336418
+336419
+336420
+336421
+336422
+336423
+336424
+336425
+336426
+336427
+336428
+336429
+336430
+336431
+336432
+336433
+336434
+336435
+336436
+336437
+336438
+336439
+336440
+336441
+336442
+336443
+336444
+336445
+336446
+336447
+336448
+336449
+336450
+336451
+336452
+336453
+336454
+336455
+336456
+336457
+336458
+336459
+336460
+336461
+336462
+336463
+336464
+336465
+336466
+336467
+336468
+336469
+336470
+336471
+336472
+336473
+336474
+336475
+336476
+336477
+336478
+336479
+336480
+336481
+336482
+336483
+336484
+336485
+336486
+336487
+336488
+336489
+336490
+336491
+336492
+336493
+336494
+336495
+336496
+336497
+336498
+336499
+336500
+336501
+336502
+336503
+336504
+336505
+336506
+336507
+336508
+336509
+336510
+336511
+336512
+336513
+336514
+336515
+336516
+336517
+336518
+336519
+336520
+336521
+336522
+336523
+336524
+336525
+336526
+336527
+336528
+336529
+336530
+336531
+336532
+336533
+336534
+336535
+336536
+336537
+336538
+336539
+336540
+336541
+336542
+336543
+336544
+336545
+336546
+336547
+336548
+336549
+336550
+336551
+336552
+336553
+336554
+336555
+336556
+336557
+336558
+336559
+336560
+336561
+336562
+336563
+336564
+336565
+336566
+336567
+336568
+336569
+336570
+336571
+336572
+336573
+336574
+336575
+336576
+336577
+336578
+336579
+336580
+336581
+336582
+336583
+336584
+336585
+336586
+336587
+336588
+336589
+336590
+336591
+336592
+336593
+336594
+336595
+336596
+336597
+336598
+336599
+336600
+336601
+336602
+336603
+336604
+336605
+336606
+336607
+336608
+336609
+336610
+336611
+336612
+336613
+336614
+336615
+336616
+336617
+336618
+336619
+336620
+336621
+336622
+336623
+336624
+336625
+336626
+336627
+336628
+336629
+336630
+336631
+336632
+336633
+336634
+336635
+336636
+336637
+336638
+336639
+336640
+336641
+336642
+336643
+336644
+336645
+336646
+336647
+336648
+336649
+336650
+336651
+336652
+336653
+336654
+336655
+336656
+336657
+336658
+336659
+336660
+336661
+336662
+336663
+336664
+336665
+336666
+336667
+336668
+336669
+336670
+336671
+336672
+336673
+336674
+336675
+336676
+336677
+336678
+336679
+336680
+336681
+336682
+336683
+336684
+336685
+336686
+336687
+336688
+336689
+336690
+336691
+336692
+336693
+336694
+336695
+336696
+336697
+336698
+336699
+336700
+336701
+336702
+336703
+336704
+336705
+336706
+336707
+336708
+336709
+336710
+336711
+336712
+336713
+336714
+336715
+336716
+336717
+336718
+336719
+336720
+336721
+336722
+336723
+336724
+336725
+336726
+336727
+336728
+336729
+336730
+336731
+336732
+336733
+336734
+336735
+336736
+336737
+336738
+336739
+336740
+336741
+336742
+336743
+336744
+336745
+336746
+336747
+336748
+336749
+336750
+336751
+336752
+336753
+336754
+336755
+336756
+336757
+336758
+336759
+336760
+336761
+336762
+336763
+336764
+336765
+336766
+336767
+336768
+336769
+336770
+336771
+336772
+336773
+336774
+336775
+336776
+336777
+336778
+336779
+336780
+336781
+336782
+336783
+336784
+336785
+336786
+336787
+336788
+336789
+336790
+336791
+336792
+336793
+336794
+336795
+336796
+336797
+336798
+336799
+336800
+336801
+336802
+336803
+336804
+336805
+336806
+336807
+336808
+336809
+336810
+336811
+336812
+336813
+336814
+336815
+336816
+336817
+336818
+336819
+336820
+336821
+336822
+336823
+336824
+336825
+336826
+336827
+336828
+336829
+336830
+336831
+336832
+336833
+336834
+336835
+336836
+336837
+336838
+336839
+336840
+336841
+336842
+336843
+336844
+336845
+336846
+336847
+336848
+336849
+336850
+336851
+336852
+336853
+336854
+336855
+336856
+336857
+336858
+336859
+336860
+336861
+336862
+336863
+336864
+336865
+336866
+336867
+336868
+336869
+336870
+336871
+336872
+336873
+336874
+336875
+336876
+336877
+336878
+336879
+336880
+336881
+336882
+336883
+336884
+336885
+336886
+336887
+336888
+336889
+336890
+336891
+336892
+336893
+336894
+336895
+336896
+336897
+336898
+336899
+336900
+336901
+336902
+336903
+336904
+336905
+336906
+336907
+336908
+336909
+336910
+336911
+336912
+336913
+336914
+336915
+336916
+336917
+336918
+336919
+336920
+336921
+336922
+336923
+336924
+336925
+336926
+336927
+336928
+336929
+336930
+336931
+336932
+336933
+336934
+336935
+336936
+336937
+336938
+336939
+336940
+336941
+336942
+336943
+336944
+336945
+336946
+336947
+336948
+336949
+336950
+336951
+336952
+336953
+336954
+336955
+336956
+336957
+336958
+336959
+336960
+336961
+336962
+336963
+336964
+336965
+336966
+336967
+336968
+336969
+336970
+336971
+336972
+336973
+336974
+336975
+336976
+336977
+336978
+336979
+336980
+336981
+336982
+336983
+336984
+336985
+336986
+336987
+336988
+336989
+336990
+336991
+336992
+336993
+336994
+336995
+336996
+336997
+336998
+336999
+337000
+337001
+337002
+337003
+337004
+337005
+337006
+337007
+337008
+337009
+337010
+337011
+337012
+337013
+337014
+337015
+337016
+337017
+337018
+337019
+337020
+337021
+337022
+337023
+337024
+337025
+337026
+337027
+337028
+337029
+337030
+337031
+337032
+337033
+337034
+337035
+337036
+337037
+337038
+337039
+337040
+337041
+337042
+337043
+337044
+337045
+337046
+337047
+337048
+337049
+337050
+337051
+337052
+337053
+337054
+337055
+337056
+337057
+337058
+337059
+337060
+337061
+337062
+337063
+337064
+337065
+337066
+337067
+337068
+337069
+337070
+337071
+337072
+337073
+337074
+337075
+337076
+337077
+337078
+337079
+337080
+337081
+337082
+337083
+337084
+337085
+337086
+337087
+337088
+337089
+337090
+337091
+337092
+337093
+337094
+337095
+337096
+337097
+337098
+337099
+337100
+337101
+337102
+337103
+337104
+337105
+337106
+337107
+337108
+337109
+337110
+337111
+337112
+337113
+337114
+337115
+337116
+337117
+337118
+337119
+337120
+337121
+337122
+337123
+337124
+337125
+337126
+337127
+337128
+337129
+337130
+337131
+337132
+337133
+337134
+337135
+337136
+337137
+337138
+337139
+337140
+337141
+337142
+337143
+337144
+337145
+337146
+337147
+337148
+337149
+337150
+337151
+337152
+337153
+337154
+337155
+337156
+337157
+337158
+337159
+337160
+337161
+337162
+337163
+337164
+337165
+337166
+337167
+337168
+337169
+337170
+337171
+337172
+337173
+337174
+337175
+337176
+337177
+337178
+337179
+337180
+337181
+337182
+337183
+337184
+337185
+337186
+337187
+337188
+337189
+337190
+337191
+337192
+337193
+337194
+337195
+337196
+337197
+337198
+337199
+337200
+337201
+337202
+337203
+337204
+337205
+337206
+337207
+337208
+337209
+337210
+337211
+337212
+337213
+337214
+337215
+337216
+337217
+337218
+337219
+337220
+337221
+337222
+337223
+337224
+337225
+337226
+337227
+337228
+337229
+337230
+337231
+337232
+337233
+337234
+337235
+337236
+337237
+337238
+337239
+337240
+337241
+337242
+337243
+337244
+337245
+337246
+337247
+337248
+337249
+337250
+337251
+337252
+337253
+337254
+337255
+337256
+337257
+337258
+337259
+337260
+337261
+337262
+337263
+337264
+337265
+337266
+337267
+337268
+337269
+337270
+337271
+337272
+337273
+337274
+337275
+337276
+337277
+337278
+337279
+337280
+337281
+337282
+337283
+337284
+337285
+337286
+337287
+337288
+337289
+337290
+337291
+337292
+337293
+337294
+337295
+337296
+337297
+337298
+337299
+337300
+337301
+337302
+337303
+337304
+337305
+337306
+337307
+337308
+337309
+337310
+337311
+337312
+337313
+337314
+337315
+337316
+337317
+337318
+337319
+337320
+337321
+337322
+337323
+337324
+337325
+337326
+337327
+337328
+337329
+337330
+337331
+337332
+337333
+337334
+337335
+337336
+337337
+337338
+337339
+337340
+337341
+337342
+337343
+337344
+337345
+337346
+337347
+337348
+337349
+337350
+337351
+337352
+337353
+337354
+337355
+337356
+337357
+337358
+337359
+337360
+337361
+337362
+337363
+337364
+337365
+337366
+337367
+337368
+337369
+337370
+337371
+337372
+337373
+337374
+337375
+337376
+337377
+337378
+337379
+337380
+337381
+337382
+337383
+337384
+337385
+337386
+337387
+337388
+337389
+337390
+337391
+337392
+337393
+337394
+337395
+337396
+337397
+337398
+337399
+337400
+337401
+337402
+337403
+337404
+337405
+337406
+337407
+337408
+337409
+337410
+337411
+337412
+337413
+337414
+337415
+337416
+337417
+337418
+337419
+337420
+337421
+337422
+337423
+337424
+337425
+337426
+337427
+337428
+337429
+337430
+337431
+337432
+337433
+337434
+337435
+337436
+337437
+337438
+337439
+337440
+337441
+337442
+337443
+337444
+337445
+337446
+337447
+337448
+337449
+337450
+337451
+337452
+337453
+337454
+337455
+337456
+337457
+337458
+337459
+337460
+337461
+337462
+337463
+337464
+337465
+337466
+337467
+337468
+337469
+337470
+337471
+337472
+337473
+337474
+337475
+337476
+337477
+337478
+337479
+337480
+337481
+337482
+337483
+337484
+337485
+337486
+337487
+337488
+337489
+337490
+337491
+337492
+337493
+337494
+337495
+337496
+337497
+337498
+337499
+337500
+337501
+337502
+337503
+337504
+337505
+337506
+337507
+337508
+337509
+337510
+337511
+337512
+337513
+337514
+337515
+337516
+337517
+337518
+337519
+337520
+337521
+337522
+337523
+337524
+337525
+337526
+337527
+337528
+337529
+337530
+337531
+337532
+337533
+337534
+337535
+337536
+337537
+337538
+337539
+337540
+337541
+337542
+337543
+337544
+337545
+337546
+337547
+337548
+337549
+337550
+337551
+337552
+337553
+337554
+337555
+337556
+337557
+337558
+337559
+337560
+337561
+337562
+337563
+337564
+337565
+337566
+337567
+337568
+337569
+337570
+337571
+337572
+337573
+337574
+337575
+337576
+337577
+337578
+337579
+337580
+337581
+337582
+337583
+337584
+337585
+337586
+337587
+337588
+337589
+337590
+337591
+337592
+337593
+337594
+337595
+337596
+337597
+337598
+337599
+337600
+337601
+337602
+337603
+337604
+337605
+337606
+337607
+337608
+337609
+337610
+337611
+337612
+337613
+337614
+337615
+337616
+337617
+337618
+337619
+337620
+337621
+337622
+337623
+337624
+337625
+337626
+337627
+337628
+337629
+337630
+337631
+337632
+337633
+337634
+337635
+337636
+337637
+337638
+337639
+337640
+337641
+337642
+337643
+337644
+337645
+337646
+337647
+337648
+337649
+337650
+337651
+337652
+337653
+337654
+337655
+337656
+337657
+337658
+337659
+337660
+337661
+337662
+337663
+337664
+337665
+337666
+337667
+337668
+337669
+337670
+337671
+337672
+337673
+337674
+337675
+337676
+337677
+337678
+337679
+337680
+337681
+337682
+337683
+337684
+337685
+337686
+337687
+337688
+337689
+337690
+337691
+337692
+337693
+337694
+337695
+337696
+337697
+337698
+337699
+337700
+337701
+337702
+337703
+337704
+337705
+337706
+337707
+337708
+337709
+337710
+337711
+337712
+337713
+337714
+337715
+337716
+337717
+337718
+337719
+337720
+337721
+337722
+337723
+337724
+337725
+337726
+337727
+337728
+337729
+337730
+337731
+337732
+337733
+337734
+337735
+337736
+337737
+337738
+337739
+337740
+337741
+337742
+337743
+337744
+337745
+337746
+337747
+337748
+337749
+337750
+337751
+337752
+337753
+337754
+337755
+337756
+337757
+337758
+337759
+337760
+337761
+337762
+337763
+337764
+337765
+337766
+337767
+337768
+337769
+337770
+337771
+337772
+337773
+337774
+337775
+337776
+337777
+337778
+337779
+337780
+337781
+337782
+337783
+337784
+337785
+337786
+337787
+337788
+337789
+337790
+337791
+337792
+337793
+337794
+337795
+337796
+337797
+337798
+337799
+337800
+337801
+337802
+337803
+337804
+337805
+337806
+337807
+337808
+337809
+337810
+337811
+337812
+337813
+337814
+337815
+337816
+337817
+337818
+337819
+337820
+337821
+337822
+337823
+337824
+337825
+337826
+337827
+337828
+337829
+337830
+337831
+337832
+337833
+337834
+337835
+337836
+337837
+337838
+337839
+337840
+337841
+337842
+337843
+337844
+337845
+337846
+337847
+337848
+337849
+337850
+337851
+337852
+337853
+337854
+337855
+337856
+337857
+337858
+337859
+337860
+337861
+337862
+337863
+337864
+337865
+337866
+337867
+337868
+337869
+337870
+337871
+337872
+337873
+337874
+337875
+337876
+337877
+337878
+337879
+337880
+337881
+337882
+337883
+337884
+337885
+337886
+337887
+337888
+337889
+337890
+337891
+337892
+337893
+337894
+337895
+337896
+337897
+337898
+337899
+337900
+337901
+337902
+337903
+337904
+337905
+337906
+337907
+337908
+337909
+337910
+337911
+337912
+337913
+337914
+337915
+337916
+337917
+337918
+337919
+337920
+337921
+337922
+337923
+337924
+337925
+337926
+337927
+337928
+337929
+337930
+337931
+337932
+337933
+337934
+337935
+337936
+337937
+337938
+337939
+337940
+337941
+337942
+337943
+337944
+337945
+337946
+337947
+337948
+337949
+337950
+337951
+337952
+337953
+337954
+337955
+337956
+337957
+337958
+337959
+337960
+337961
+337962
+337963
+337964
+337965
+337966
+337967
+337968
+337969
+337970
+337971
+337972
+337973
+337974
+337975
+337976
+337977
+337978
+337979
+337980
+337981
+337982
+337983
+337984
+337985
+337986
+337987
+337988
+337989
+337990
+337991
+337992
+337993
+337994
+337995
+337996
+337997
+337998
+337999
+338000
+338001
+338002
+338003
+338004
+338005
+338006
+338007
+338008
+338009
+338010
+338011
+338012
+338013
+338014
+338015
+338016
+338017
+338018
+338019
+338020
+338021
+338022
+338023
+338024
+338025
+338026
+338027
+338028
+338029
+338030
+338031
+338032
+338033
+338034
+338035
+338036
+338037
+338038
+338039
+338040
+338041
+338042
+338043
+338044
+338045
+338046
+338047
+338048
+338049
+338050
+338051
+338052
+338053
+338054
+338055
+338056
+338057
+338058
+338059
+338060
+338061
+338062
+338063
+338064
+338065
+338066
+338067
+338068
+338069
+338070
+338071
+338072
+338073
+338074
+338075
+338076
+338077
+338078
+338079
+338080
+338081
+338082
+338083
+338084
+338085
+338086
+338087
+338088
+338089
+338090
+338091
+338092
+338093
+338094
+338095
+338096
+338097
+338098
+338099
+338100
+338101
+338102
+338103
+338104
+338105
+338106
+338107
+338108
+338109
+338110
+338111
+338112
+338113
+338114
+338115
+338116
+338117
+338118
+338119
+338120
+338121
+338122
+338123
+338124
+338125
+338126
+338127
+338128
+338129
+338130
+338131
+338132
+338133
+338134
+338135
+338136
+338137
+338138
+338139
+338140
+338141
+338142
+338143
+338144
+338145
+338146
+338147
+338148
+338149
+338150
+338151
+338152
+338153
+338154
+338155
+338156
+338157
+338158
+338159
+338160
+338161
+338162
+338163
+338164
+338165
+338166
+338167
+338168
+338169
+338170
+338171
+338172
+338173
+338174
+338175
+338176
+338177
+338178
+338179
+338180
+338181
+338182
+338183
+338184
+338185
+338186
+338187
+338188
+338189
+338190
+338191
+338192
+338193
+338194
+338195
+338196
+338197
+338198
+338199
+338200
+338201
+338202
+338203
+338204
+338205
+338206
+338207
+338208
+338209
+338210
+338211
+338212
+338213
+338214
+338215
+338216
+338217
+338218
+338219
+338220
+338221
+338222
+338223
+338224
+338225
+338226
+338227
+338228
+338229
+338230
+338231
+338232
+338233
+338234
+338235
+338236
+338237
+338238
+338239
+338240
+338241
+338242
+338243
+338244
+338245
+338246
+338247
+338248
+338249
+338250
+338251
+338252
+338253
+338254
+338255
+338256
+338257
+338258
+338259
+338260
+338261
+338262
+338263
+338264
+338265
+338266
+338267
+338268
+338269
+338270
+338271
+338272
+338273
+338274
+338275
+338276
+338277
+338278
+338279
+338280
+338281
+338282
+338283
+338284
+338285
+338286
+338287
+338288
+338289
+338290
+338291
+338292
+338293
+338294
+338295
+338296
+338297
+338298
+338299
+338300
+338301
+338302
+338303
+338304
+338305
+338306
+338307
+338308
+338309
+338310
+338311
+338312
+338313
+338314
+338315
+338316
+338317
+338318
+338319
+338320
+338321
+338322
+338323
+338324
+338325
+338326
+338327
+338328
+338329
+338330
+338331
+338332
+338333
+338334
+338335
+338336
+338337
+338338
+338339
+338340
+338341
+338342
+338343
+338344
+338345
+338346
+338347
+338348
+338349
+338350
+338351
+338352
+338353
+338354
+338355
+338356
+338357
+338358
+338359
+338360
+338361
+338362
+338363
+338364
+338365
+338366
+338367
+338368
+338369
+338370
+338371
+338372
+338373
+338374
+338375
+338376
+338377
+338378
+338379
+338380
+338381
+338382
+338383
+338384
+338385
+338386
+338387
+338388
+338389
+338390
+338391
+338392
+338393
+338394
+338395
+338396
+338397
+338398
+338399
+338400
+338401
+338402
+338403
+338404
+338405
+338406
+338407
+338408
+338409
+338410
+338411
+338412
+338413
+338414
+338415
+338416
+338417
+338418
+338419
+338420
+338421
+338422
+338423
+338424
+338425
+338426
+338427
+338428
+338429
+338430
+338431
+338432
+338433
+338434
+338435
+338436
+338437
+338438
+338439
+338440
+338441
+338442
+338443
+338444
+338445
+338446
+338447
+338448
+338449
+338450
+338451
+338452
+338453
+338454
+338455
+338456
+338457
+338458
+338459
+338460
+338461
+338462
+338463
+338464
+338465
+338466
+338467
+338468
+338469
+338470
+338471
+338472
+338473
+338474
+338475
+338476
+338477
+338478
+338479
+338480
+338481
+338482
+338483
+338484
+338485
+338486
+338487
+338488
+338489
+338490
+338491
+338492
+338493
+338494
+338495
+338496
+338497
+338498
+338499
+338500
+338501
+338502
+338503
+338504
+338505
+338506
+338507
+338508
+338509
+338510
+338511
+338512
+338513
+338514
+338515
+338516
+338517
+338518
+338519
+338520
+338521
+338522
+338523
+338524
+338525
+338526
+338527
+338528
+338529
+338530
+338531
+338532
+338533
+338534
+338535
+338536
+338537
+338538
+338539
+338540
+338541
+338542
+338543
+338544
+338545
+338546
+338547
+338548
+338549
+338550
+338551
+338552
+338553
+338554
+338555
+338556
+338557
+338558
+338559
+338560
+338561
+338562
+338563
+338564
+338565
+338566
+338567
+338568
+338569
+338570
+338571
+338572
+338573
+338574
+338575
+338576
+338577
+338578
+338579
+338580
+338581
+338582
+338583
+338584
+338585
+338586
+338587
+338588
+338589
+338590
+338591
+338592
+338593
+338594
+338595
+338596
+338597
+338598
+338599
+338600
+338601
+338602
+338603
+338604
+338605
+338606
+338607
+338608
+338609
+338610
+338611
+338612
+338613
+338614
+338615
+338616
+338617
+338618
+338619
+338620
+338621
+338622
+338623
+338624
+338625
+338626
+338627
+338628
+338629
+338630
+338631
+338632
+338633
+338634
+338635
+338636
+338637
+338638
+338639
+338640
+338641
+338642
+338643
+338644
+338645
+338646
+338647
+338648
+338649
+338650
+338651
+338652
+338653
+338654
+338655
+338656
+338657
+338658
+338659
+338660
+338661
+338662
+338663
+338664
+338665
+338666
+338667
+338668
+338669
+338670
+338671
+338672
+338673
+338674
+338675
+338676
+338677
+338678
+338679
+338680
+338681
+338682
+338683
+338684
+338685
+338686
+338687
+338688
+338689
+338690
+338691
+338692
+338693
+338694
+338695
+338696
+338697
+338698
+338699
+338700
+338701
+338702
+338703
+338704
+338705
+338706
+338707
+338708
+338709
+338710
+338711
+338712
+338713
+338714
+338715
+338716
+338717
+338718
+338719
+338720
+338721
+338722
+338723
+338724
+338725
+338726
+338727
+338728
+338729
+338730
+338731
+338732
+338733
+338734
+338735
+338736
+338737
+338738
+338739
+338740
+338741
+338742
+338743
+338744
+338745
+338746
+338747
+338748
+338749
+338750
+338751
+338752
+338753
+338754
+338755
+338756
+338757
+338758
+338759
+338760
+338761
+338762
+338763
+338764
+338765
+338766
+338767
+338768
+338769
+338770
+338771
+338772
+338773
+338774
+338775
+338776
+338777
+338778
+338779
+338780
+338781
+338782
+338783
+338784
+338785
+338786
+338787
+338788
+338789
+338790
+338791
+338792
+338793
+338794
+338795
+338796
+338797
+338798
+338799
+338800
+338801
+338802
+338803
+338804
+338805
+338806
+338807
+338808
+338809
+338810
+338811
+338812
+338813
+338814
+338815
+338816
+338817
+338818
+338819
+338820
+338821
+338822
+338823
+338824
+338825
+338826
+338827
+338828
+338829
+338830
+338831
+338832
+338833
+338834
+338835
+338836
+338837
+338838
+338839
+338840
+338841
+338842
+338843
+338844
+338845
+338846
+338847
+338848
+338849
+338850
+338851
+338852
+338853
+338854
+338855
+338856
+338857
+338858
+338859
+338860
+338861
+338862
+338863
+338864
+338865
+338866
+338867
+338868
+338869
+338870
+338871
+338872
+338873
+338874
+338875
+338876
+338877
+338878
+338879
+338880
+338881
+338882
+338883
+338884
+338885
+338886
+338887
+338888
+338889
+338890
+338891
+338892
+338893
+338894
+338895
+338896
+338897
+338898
+338899
+338900
+338901
+338902
+338903
+338904
+338905
+338906
+338907
+338908
+338909
+338910
+338911
+338912
+338913
+338914
+338915
+338916
+338917
+338918
+338919
+338920
+338921
+338922
+338923
+338924
+338925
+338926
+338927
+338928
+338929
+338930
+338931
+338932
+338933
+338934
+338935
+338936
+338937
+338938
+338939
+338940
+338941
+338942
+338943
+338944
+338945
+338946
+338947
+338948
+338949
+338950
+338951
+338952
+338953
+338954
+338955
+338956
+338957
+338958
+338959
+338960
+338961
+338962
+338963
+338964
+338965
+338966
+338967
+338968
+338969
+338970
+338971
+338972
+338973
+338974
+338975
+338976
+338977
+338978
+338979
+338980
+338981
+338982
+338983
+338984
+338985
+338986
+338987
+338988
+338989
+338990
+338991
+338992
+338993
+338994
+338995
+338996
+338997
+338998
+338999
+339000
+339001
+339002
+339003
+339004
+339005
+339006
+339007
+339008
+339009
+339010
+339011
+339012
+339013
+339014
+339015
+339016
+339017
+339018
+339019
+339020
+339021
+339022
+339023
+339024
+339025
+339026
+339027
+339028
+339029
+339030
+339031
+339032
+339033
+339034
+339035
+339036
+339037
+339038
+339039
+339040
+339041
+339042
+339043
+339044
+339045
+339046
+339047
+339048
+339049
+339050
+339051
+339052
+339053
+339054
+339055
+339056
+339057
+339058
+339059
+339060
+339061
+339062
+339063
+339064
+339065
+339066
+339067
+339068
+339069
+339070
+339071
+339072
+339073
+339074
+339075
+339076
+339077
+339078
+339079
+339080
+339081
+339082
+339083
+339084
+339085
+339086
+339087
+339088
+339089
+339090
+339091
+339092
+339093
+339094
+339095
+339096
+339097
+339098
+339099
+339100
+339101
+339102
+339103
+339104
+339105
+339106
+339107
+339108
+339109
+339110
+339111
+339112
+339113
+339114
+339115
+339116
+339117
+339118
+339119
+339120
+339121
+339122
+339123
+339124
+339125
+339126
+339127
+339128
+339129
+339130
+339131
+339132
+339133
+339134
+339135
+339136
+339137
+339138
+339139
+339140
+339141
+339142
+339143
+339144
+339145
+339146
+339147
+339148
+339149
+339150
+339151
+339152
+339153
+339154
+339155
+339156
+339157
+339158
+339159
+339160
+339161
+339162
+339163
+339164
+339165
+339166
+339167
+339168
+339169
+339170
+339171
+339172
+339173
+339174
+339175
+339176
+339177
+339178
+339179
+339180
+339181
+339182
+339183
+339184
+339185
+339186
+339187
+339188
+339189
+339190
+339191
+339192
+339193
+339194
+339195
+339196
+339197
+339198
+339199
+339200
+339201
+339202
+339203
+339204
+339205
+339206
+339207
+339208
+339209
+339210
+339211
+339212
+339213
+339214
+339215
+339216
+339217
+339218
+339219
+339220
+339221
+339222
+339223
+339224
+339225
+339226
+339227
+339228
+339229
+339230
+339231
+339232
+339233
+339234
+339235
+339236
+339237
+339238
+339239
+339240
+339241
+339242
+339243
+339244
+339245
+339246
+339247
+339248
+339249
+339250
+339251
+339252
+339253
+339254
+339255
+339256
+339257
+339258
+339259
+339260
+339261
+339262
+339263
+339264
+339265
+339266
+339267
+339268
+339269
+339270
+339271
+339272
+339273
+339274
+339275
+339276
+339277
+339278
+339279
+339280
+339281
+339282
+339283
+339284
+339285
+339286
+339287
+339288
+339289
+339290
+339291
+339292
+339293
+339294
+339295
+339296
+339297
+339298
+339299
+339300
+339301
+339302
+339303
+339304
+339305
+339306
+339307
+339308
+339309
+339310
+339311
+339312
+339313
+339314
+339315
+339316
+339317
+339318
+339319
+339320
+339321
+339322
+339323
+339324
+339325
+339326
+339327
+339328
+339329
+339330
+339331
+339332
+339333
+339334
+339335
+339336
+339337
+339338
+339339
+339340
+339341
+339342
+339343
+339344
+339345
+339346
+339347
+339348
+339349
+339350
+339351
+339352
+339353
+339354
+339355
+339356
+339357
+339358
+339359
+339360
+339361
+339362
+339363
+339364
+339365
+339366
+339367
+339368
+339369
+339370
+339371
+339372
+339373
+339374
+339375
+339376
+339377
+339378
+339379
+339380
+339381
+339382
+339383
+339384
+339385
+339386
+339387
+339388
+339389
+339390
+339391
+339392
+339393
+339394
+339395
+339396
+339397
+339398
+339399
+339400
+339401
+339402
+339403
+339404
+339405
+339406
+339407
+339408
+339409
+339410
+339411
+339412
+339413
+339414
+339415
+339416
+339417
+339418
+339419
+339420
+339421
+339422
+339423
+339424
+339425
+339426
+339427
+339428
+339429
+339430
+339431
+339432
+339433
+339434
+339435
+339436
+339437
+339438
+339439
+339440
+339441
+339442
+339443
+339444
+339445
+339446
+339447
+339448
+339449
+339450
+339451
+339452
+339453
+339454
+339455
+339456
+339457
+339458
+339459
+339460
+339461
+339462
+339463
+339464
+339465
+339466
+339467
+339468
+339469
+339470
+339471
+339472
+339473
+339474
+339475
+339476
+339477
+339478
+339479
+339480
+339481
+339482
+339483
+339484
+339485
+339486
+339487
+339488
+339489
+339490
+339491
+339492
+339493
+339494
+339495
+339496
+339497
+339498
+339499
+339500
+339501
+339502
+339503
+339504
+339505
+339506
+339507
+339508
+339509
+339510
+339511
+339512
+339513
+339514
+339515
+339516
+339517
+339518
+339519
+339520
+339521
+339522
+339523
+339524
+339525
+339526
+339527
+339528
+339529
+339530
+339531
+339532
+339533
+339534
+339535
+339536
+339537
+339538
+339539
+339540
+339541
+339542
+339543
+339544
+339545
+339546
+339547
+339548
+339549
+339550
+339551
+339552
+339553
+339554
+339555
+339556
+339557
+339558
+339559
+339560
+339561
+339562
+339563
+339564
+339565
+339566
+339567
+339568
+339569
+339570
+339571
+339572
+339573
+339574
+339575
+339576
+339577
+339578
+339579
+339580
+339581
+339582
+339583
+339584
+339585
+339586
+339587
+339588
+339589
+339590
+339591
+339592
+339593
+339594
+339595
+339596
+339597
+339598
+339599
+339600
+339601
+339602
+339603
+339604
+339605
+339606
+339607
+339608
+339609
+339610
+339611
+339612
+339613
+339614
+339615
+339616
+339617
+339618
+339619
+339620
+339621
+339622
+339623
+339624
+339625
+339626
+339627
+339628
+339629
+339630
+339631
+339632
+339633
+339634
+339635
+339636
+339637
+339638
+339639
+339640
+339641
+339642
+339643
+339644
+339645
+339646
+339647
+339648
+339649
+339650
+339651
+339652
+339653
+339654
+339655
+339656
+339657
+339658
+339659
+339660
+339661
+339662
+339663
+339664
+339665
+339666
+339667
+339668
+339669
+339670
+339671
+339672
+339673
+339674
+339675
+339676
+339677
+339678
+339679
+339680
+339681
+339682
+339683
+339684
+339685
+339686
+339687
+339688
+339689
+339690
+339691
+339692
+339693
+339694
+339695
+339696
+339697
+339698
+339699
+339700
+339701
+339702
+339703
+339704
+339705
+339706
+339707
+339708
+339709
+339710
+339711
+339712
+339713
+339714
+339715
+339716
+339717
+339718
+339719
+339720
+339721
+339722
+339723
+339724
+339725
+339726
+339727
+339728
+339729
+339730
+339731
+339732
+339733
+339734
+339735
+339736
+339737
+339738
+339739
+339740
+339741
+339742
+339743
+339744
+339745
+339746
+339747
+339748
+339749
+339750
+339751
+339752
+339753
+339754
+339755
+339756
+339757
+339758
+339759
+339760
+339761
+339762
+339763
+339764
+339765
+339766
+339767
+339768
+339769
+339770
+339771
+339772
+339773
+339774
+339775
+339776
+339777
+339778
+339779
+339780
+339781
+339782
+339783
+339784
+339785
+339786
+339787
+339788
+339789
+339790
+339791
+339792
+339793
+339794
+339795
+339796
+339797
+339798
+339799
+339800
+339801
+339802
+339803
+339804
+339805
+339806
+339807
+339808
+339809
+339810
+339811
+339812
+339813
+339814
+339815
+339816
+339817
+339818
+339819
+339820
+339821
+339822
+339823
+339824
+339825
+339826
+339827
+339828
+339829
+339830
+339831
+339832
+339833
+339834
+339835
+339836
+339837
+339838
+339839
+339840
+339841
+339842
+339843
+339844
+339845
+339846
+339847
+339848
+339849
+339850
+339851
+339852
+339853
+339854
+339855
+339856
+339857
+339858
+339859
+339860
+339861
+339862
+339863
+339864
+339865
+339866
+339867
+339868
+339869
+339870
+339871
+339872
+339873
+339874
+339875
+339876
+339877
+339878
+339879
+339880
+339881
+339882
+339883
+339884
+339885
+339886
+339887
+339888
+339889
+339890
+339891
+339892
+339893
+339894
+339895
+339896
+339897
+339898
+339899
+339900
+339901
+339902
+339903
+339904
+339905
+339906
+339907
+339908
+339909
+339910
+339911
+339912
+339913
+339914
+339915
+339916
+339917
+339918
+339919
+339920
+339921
+339922
+339923
+339924
+339925
+339926
+339927
+339928
+339929
+339930
+339931
+339932
+339933
+339934
+339935
+339936
+339937
+339938
+339939
+339940
+339941
+339942
+339943
+339944
+339945
+339946
+339947
+339948
+339949
+339950
+339951
+339952
+339953
+339954
+339955
+339956
+339957
+339958
+339959
+339960
+339961
+339962
+339963
+339964
+339965
+339966
+339967
+339968
+339969
+339970
+339971
+339972
+339973
+339974
+339975
+339976
+339977
+339978
+339979
+339980
+339981
+339982
+339983
+339984
+339985
+339986
+339987
+339988
+339989
+339990
+339991
+339992
+339993
+339994
+339995
+339996
+339997
+339998
+339999
+340000
+340001
+340002
+340003
+340004
+340005
+340006
+340007
+340008
+340009
+340010
+340011
+340012
+340013
+340014
+340015
+340016
+340017
+340018
+340019
+340020
+340021
+340022
+340023
+340024
+340025
+340026
+340027
+340028
+340029
+340030
+340031
+340032
+340033
+340034
+340035
+340036
+340037
+340038
+340039
+340040
+340041
+340042
+340043
+340044
+340045
+340046
+340047
+340048
+340049
+340050
+340051
+340052
+340053
+340054
+340055
+340056
+340057
+340058
+340059
+340060
+340061
+340062
+340063
+340064
+340065
+340066
+340067
+340068
+340069
+340070
+340071
+340072
+340073
+340074
+340075
+340076
+340077
+340078
+340079
+340080
+340081
+340082
+340083
+340084
+340085
+340086
+340087
+340088
+340089
+340090
+340091
+340092
+340093
+340094
+340095
+340096
+340097
+340098
+340099
+340100
+340101
+340102
+340103
+340104
+340105
+340106
+340107
+340108
+340109
+340110
+340111
+340112
+340113
+340114
+340115
+340116
+340117
+340118
+340119
+340120
+340121
+340122
+340123
+340124
+340125
+340126
+340127
+340128
+340129
+340130
+340131
+340132
+340133
+340134
+340135
+340136
+340137
+340138
+340139
+340140
+340141
+340142
+340143
+340144
+340145
+340146
+340147
+340148
+340149
+340150
+340151
+340152
+340153
+340154
+340155
+340156
+340157
+340158
+340159
+340160
+340161
+340162
+340163
+340164
+340165
+340166
+340167
+340168
+340169
+340170
+340171
+340172
+340173
+340174
+340175
+340176
+340177
+340178
+340179
+340180
+340181
+340182
+340183
+340184
+340185
+340186
+340187
+340188
+340189
+340190
+340191
+340192
+340193
+340194
+340195
+340196
+340197
+340198
+340199
+340200
+340201
+340202
+340203
+340204
+340205
+340206
+340207
+340208
+340209
+340210
+340211
+340212
+340213
+340214
+340215
+340216
+340217
+340218
+340219
+340220
+340221
+340222
+340223
+340224
+340225
+340226
+340227
+340228
+340229
+340230
+340231
+340232
+340233
+340234
+340235
+340236
+340237
+340238
+340239
+340240
+340241
+340242
+340243
+340244
+340245
+340246
+340247
+340248
+340249
+340250
+340251
+340252
+340253
+340254
+340255
+340256
+340257
+340258
+340259
+340260
+340261
+340262
+340263
+340264
+340265
+340266
+340267
+340268
+340269
+340270
+340271
+340272
+340273
+340274
+340275
+340276
+340277
+340278
+340279
+340280
+340281
+340282
+340283
+340284
+340285
+340286
+340287
+340288
+340289
+340290
+340291
+340292
+340293
+340294
+340295
+340296
+340297
+340298
+340299
+340300
+340301
+340302
+340303
+340304
+340305
+340306
+340307
+340308
+340309
+340310
+340311
+340312
+340313
+340314
+340315
+340316
+340317
+340318
+340319
+340320
+340321
+340322
+340323
+340324
+340325
+340326
+340327
+340328
+340329
+340330
+340331
+340332
+340333
+340334
+340335
+340336
+340337
+340338
+340339
+340340
+340341
+340342
+340343
+340344
+340345
+340346
+340347
+340348
+340349
+340350
+340351
+340352
+340353
+340354
+340355
+340356
+340357
+340358
+340359
+340360
+340361
+340362
+340363
+340364
+340365
+340366
+340367
+340368
+340369
+340370
+340371
+340372
+340373
+340374
+340375
+340376
+340377
+340378
+340379
+340380
+340381
+340382
+340383
+340384
+340385
+340386
+340387
+340388
+340389
+340390
+340391
+340392
+340393
+340394
+340395
+340396
+340397
+340398
+340399
+340400
+340401
+340402
+340403
+340404
+340405
+340406
+340407
+340408
+340409
+340410
+340411
+340412
+340413
+340414
+340415
+340416
+340417
+340418
+340419
+340420
+340421
+340422
+340423
+340424
+340425
+340426
+340427
+340428
+340429
+340430
+340431
+340432
+340433
+340434
+340435
+340436
+340437
+340438
+340439
+340440
+340441
+340442
+340443
+340444
+340445
+340446
+340447
+340448
+340449
+340450
+340451
+340452
+340453
+340454
+340455
+340456
+340457
+340458
+340459
+340460
+340461
+340462
+340463
+340464
+340465
+340466
+340467
+340468
+340469
+340470
+340471
+340472
+340473
+340474
+340475
+340476
+340477
+340478
+340479
+340480
+340481
+340482
+340483
+340484
+340485
+340486
+340487
+340488
+340489
+340490
+340491
+340492
+340493
+340494
+340495
+340496
+340497
+340498
+340499
+340500
+340501
+340502
+340503
+340504
+340505
+340506
+340507
+340508
+340509
+340510
+340511
+340512
+340513
+340514
+340515
+340516
+340517
+340518
+340519
+340520
+340521
+340522
+340523
+340524
+340525
+340526
+340527
+340528
+340529
+340530
+340531
+340532
+340533
+340534
+340535
+340536
+340537
+340538
+340539
+340540
+340541
+340542
+340543
+340544
+340545
+340546
+340547
+340548
+340549
+340550
+340551
+340552
+340553
+340554
+340555
+340556
+340557
+340558
+340559
+340560
+340561
+340562
+340563
+340564
+340565
+340566
+340567
+340568
+340569
+340570
+340571
+340572
+340573
+340574
+340575
+340576
+340577
+340578
+340579
+340580
+340581
+340582
+340583
+340584
+340585
+340586
+340587
+340588
+340589
+340590
+340591
+340592
+340593
+340594
+340595
+340596
+340597
+340598
+340599
+340600
+340601
+340602
+340603
+340604
+340605
+340606
+340607
+340608
+340609
+340610
+340611
+340612
+340613
+340614
+340615
+340616
+340617
+340618
+340619
+340620
+340621
+340622
+340623
+340624
+340625
+340626
+340627
+340628
+340629
+340630
+340631
+340632
+340633
+340634
+340635
+340636
+340637
+340638
+340639
+340640
+340641
+340642
+340643
+340644
+340645
+340646
+340647
+340648
+340649
+340650
+340651
+340652
+340653
+340654
+340655
+340656
+340657
+340658
+340659
+340660
+340661
+340662
+340663
+340664
+340665
+340666
+340667
+340668
+340669
+340670
+340671
+340672
+340673
+340674
+340675
+340676
+340677
+340678
+340679
+340680
+340681
+340682
+340683
+340684
+340685
+340686
+340687
+340688
+340689
+340690
+340691
+340692
+340693
+340694
+340695
+340696
+340697
+340698
+340699
+340700
+340701
+340702
+340703
+340704
+340705
+340706
+340707
+340708
+340709
+340710
+340711
+340712
+340713
+340714
+340715
+340716
+340717
+340718
+340719
+340720
+340721
+340722
+340723
+340724
+340725
+340726
+340727
+340728
+340729
+340730
+340731
+340732
+340733
+340734
+340735
+340736
+340737
+340738
+340739
+340740
+340741
+340742
+340743
+340744
+340745
+340746
+340747
+340748
+340749
+340750
+340751
+340752
+340753
+340754
+340755
+340756
+340757
+340758
+340759
+340760
+340761
+340762
+340763
+340764
+340765
+340766
+340767
+340768
+340769
+340770
+340771
+340772
+340773
+340774
+340775
+340776
+340777
+340778
+340779
+340780
+340781
+340782
+340783
+340784
+340785
+340786
+340787
+340788
+340789
+340790
+340791
+340792
+340793
+340794
+340795
+340796
+340797
+340798
+340799
+340800
+340801
+340802
+340803
+340804
+340805
+340806
+340807
+340808
+340809
+340810
+340811
+340812
+340813
+340814
+340815
+340816
+340817
+340818
+340819
+340820
+340821
+340822
+340823
+340824
+340825
+340826
+340827
+340828
+340829
+340830
+340831
+340832
+340833
+340834
+340835
+340836
+340837
+340838
+340839
+340840
+340841
+340842
+340843
+340844
+340845
+340846
+340847
+340848
+340849
+340850
+340851
+340852
+340853
+340854
+340855
+340856
+340857
+340858
+340859
+340860
+340861
+340862
+340863
+340864
+340865
+340866
+340867
+340868
+340869
+340870
+340871
+340872
+340873
+340874
+340875
+340876
+340877
+340878
+340879
+340880
+340881
+340882
+340883
+340884
+340885
+340886
+340887
+340888
+340889
+340890
+340891
+340892
+340893
+340894
+340895
+340896
+340897
+340898
+340899
+340900
+340901
+340902
+340903
+340904
+340905
+340906
+340907
+340908
+340909
+340910
+340911
+340912
+340913
+340914
+340915
+340916
+340917
+340918
+340919
+340920
+340921
+340922
+340923
+340924
+340925
+340926
+340927
+340928
+340929
+340930
+340931
+340932
+340933
+340934
+340935
+340936
+340937
+340938
+340939
+340940
+340941
+340942
+340943
+340944
+340945
+340946
+340947
+340948
+340949
+340950
+340951
+340952
+340953
+340954
+340955
+340956
+340957
+340958
+340959
+340960
+340961
+340962
+340963
+340964
+340965
+340966
+340967
+340968
+340969
+340970
+340971
+340972
+340973
+340974
+340975
+340976
+340977
+340978
+340979
+340980
+340981
+340982
+340983
+340984
+340985
+340986
+340987
+340988
+340989
+340990
+340991
+340992
+340993
+340994
+340995
+340996
+340997
+340998
+340999
+341000
+341001
+341002
+341003
+341004
+341005
+341006
+341007
+341008
+341009
+341010
+341011
+341012
+341013
+341014
+341015
+341016
+341017
+341018
+341019
+341020
+341021
+341022
+341023
+341024
+341025
+341026
+341027
+341028
+341029
+341030
+341031
+341032
+341033
+341034
+341035
+341036
+341037
+341038
+341039
+341040
+341041
+341042
+341043
+341044
+341045
+341046
+341047
+341048
+341049
+341050
+341051
+341052
+341053
+341054
+341055
+341056
+341057
+341058
+341059
+341060
+341061
+341062
+341063
+341064
+341065
+341066
+341067
+341068
+341069
+341070
+341071
+341072
+341073
+341074
+341075
+341076
+341077
+341078
+341079
+341080
+341081
+341082
+341083
+341084
+341085
+341086
+341087
+341088
+341089
+341090
+341091
+341092
+341093
+341094
+341095
+341096
+341097
+341098
+341099
+341100
+341101
+341102
+341103
+341104
+341105
+341106
+341107
+341108
+341109
+341110
+341111
+341112
+341113
+341114
+341115
+341116
+341117
+341118
+341119
+341120
+341121
+341122
+341123
+341124
+341125
+341126
+341127
+341128
+341129
+341130
+341131
+341132
+341133
+341134
+341135
+341136
+341137
+341138
+341139
+341140
+341141
+341142
+341143
+341144
+341145
+341146
+341147
+341148
+341149
+341150
+341151
+341152
+341153
+341154
+341155
+341156
+341157
+341158
+341159
+341160
+341161
+341162
+341163
+341164
+341165
+341166
+341167
+341168
+341169
+341170
+341171
+341172
+341173
+341174
+341175
+341176
+341177
+341178
+341179
+341180
+341181
+341182
+341183
+341184
+341185
+341186
+341187
+341188
+341189
+341190
+341191
+341192
+341193
+341194
+341195
+341196
+341197
+341198
+341199
+341200
+341201
+341202
+341203
+341204
+341205
+341206
+341207
+341208
+341209
+341210
+341211
+341212
+341213
+341214
+341215
+341216
+341217
+341218
+341219
+341220
+341221
+341222
+341223
+341224
+341225
+341226
+341227
+341228
+341229
+341230
+341231
+341232
+341233
+341234
+341235
+341236
+341237
+341238
+341239
+341240
+341241
+341242
+341243
+341244
+341245
+341246
+341247
+341248
+341249
+341250
+341251
+341252
+341253
+341254
+341255
+341256
+341257
+341258
+341259
+341260
+341261
+341262
+341263
+341264
+341265
+341266
+341267
+341268
+341269
+341270
+341271
+341272
+341273
+341274
+341275
+341276
+341277
+341278
+341279
+341280
+341281
+341282
+341283
+341284
+341285
+341286
+341287
+341288
+341289
+341290
+341291
+341292
+341293
+341294
+341295
+341296
+341297
+341298
+341299
+341300
+341301
+341302
+341303
+341304
+341305
+341306
+341307
+341308
+341309
+341310
+341311
+341312
+341313
+341314
+341315
+341316
+341317
+341318
+341319
+341320
+341321
+341322
+341323
+341324
+341325
+341326
+341327
+341328
+341329
+341330
+341331
+341332
+341333
+341334
+341335
+341336
+341337
+341338
+341339
+341340
+341341
+341342
+341343
+341344
+341345
+341346
+341347
+341348
+341349
+341350
+341351
+341352
+341353
+341354
+341355
+341356
+341357
+341358
+341359
+341360
+341361
+341362
+341363
+341364
+341365
+341366
+341367
+341368
+341369
+341370
+341371
+341372
+341373
+341374
+341375
+341376
+341377
+341378
+341379
+341380
+341381
+341382
+341383
+341384
+341385
+341386
+341387
+341388
+341389
+341390
+341391
+341392
+341393
+341394
+341395
+341396
+341397
+341398
+341399
+341400
+341401
+341402
+341403
+341404
+341405
+341406
+341407
+341408
+341409
+341410
+341411
+341412
+341413
+341414
+341415
+341416
+341417
+341418
+341419
+341420
+341421
+341422
+341423
+341424
+341425
+341426
+341427
+341428
+341429
+341430
+341431
+341432
+341433
+341434
+341435
+341436
+341437
+341438
+341439
+341440
+341441
+341442
+341443
+341444
+341445
+341446
+341447
+341448
+341449
+341450
+341451
+341452
+341453
+341454
+341455
+341456
+341457
+341458
+341459
+341460
+341461
+341462
+341463
+341464
+341465
+341466
+341467
+341468
+341469
+341470
+341471
+341472
+341473
+341474
+341475
+341476
+341477
+341478
+341479
+341480
+341481
+341482
+341483
+341484
+341485
+341486
+341487
+341488
+341489
+341490
+341491
+341492
+341493
+341494
+341495
+341496
+341497
+341498
+341499
+341500
+341501
+341502
+341503
+341504
+341505
+341506
+341507
+341508
+341509
+341510
+341511
+341512
+341513
+341514
+341515
+341516
+341517
+341518
+341519
+341520
+341521
+341522
+341523
+341524
+341525
+341526
+341527
+341528
+341529
+341530
+341531
+341532
+341533
+341534
+341535
+341536
+341537
+341538
+341539
+341540
+341541
+341542
+341543
+341544
+341545
+341546
+341547
+341548
+341549
+341550
+341551
+341552
+341553
+341554
+341555
+341556
+341557
+341558
+341559
+341560
+341561
+341562
+341563
+341564
+341565
+341566
+341567
+341568
+341569
+341570
+341571
+341572
+341573
+341574
+341575
+341576
+341577
+341578
+341579
+341580
+341581
+341582
+341583
+341584
+341585
+341586
+341587
+341588
+341589
+341590
+341591
+341592
+341593
+341594
+341595
+341596
+341597
+341598
+341599
+341600
+341601
+341602
+341603
+341604
+341605
+341606
+341607
+341608
+341609
+341610
+341611
+341612
+341613
+341614
+341615
+341616
+341617
+341618
+341619
+341620
+341621
+341622
+341623
+341624
+341625
+341626
+341627
+341628
+341629
+341630
+341631
+341632
+341633
+341634
+341635
+341636
+341637
+341638
+341639
+341640
+341641
+341642
+341643
+341644
+341645
+341646
+341647
+341648
+341649
+341650
+341651
+341652
+341653
+341654
+341655
+341656
+341657
+341658
+341659
+341660
+341661
+341662
+341663
+341664
+341665
+341666
+341667
+341668
+341669
+341670
+341671
+341672
+341673
+341674
+341675
+341676
+341677
+341678
+341679
+341680
+341681
+341682
+341683
+341684
+341685
+341686
+341687
+341688
+341689
+341690
+341691
+341692
+341693
+341694
+341695
+341696
+341697
+341698
+341699
+341700
+341701
+341702
+341703
+341704
+341705
+341706
+341707
+341708
+341709
+341710
+341711
+341712
+341713
+341714
+341715
+341716
+341717
+341718
+341719
+341720
+341721
+341722
+341723
+341724
+341725
+341726
+341727
+341728
+341729
+341730
+341731
+341732
+341733
+341734
+341735
+341736
+341737
+341738
+341739
+341740
+341741
+341742
+341743
+341744
+341745
+341746
+341747
+341748
+341749
+341750
+341751
+341752
+341753
+341754
+341755
+341756
+341757
+341758
+341759
+341760
+341761
+341762
+341763
+341764
+341765
+341766
+341767
+341768
+341769
+341770
+341771
+341772
+341773
+341774
+341775
+341776
+341777
+341778
+341779
+341780
+341781
+341782
+341783
+341784
+341785
+341786
+341787
+341788
+341789
+341790
+341791
+341792
+341793
+341794
+341795
+341796
+341797
+341798
+341799
+341800
+341801
+341802
+341803
+341804
+341805
+341806
+341807
+341808
+341809
+341810
+341811
+341812
+341813
+341814
+341815
+341816
+341817
+341818
+341819
+341820
+341821
+341822
+341823
+341824
+341825
+341826
+341827
+341828
+341829
+341830
+341831
+341832
+341833
+341834
+341835
+341836
+341837
+341838
+341839
+341840
+341841
+341842
+341843
+341844
+341845
+341846
+341847
+341848
+341849
+341850
+341851
+341852
+341853
+341854
+341855
+341856
+341857
+341858
+341859
+341860
+341861
+341862
+341863
+341864
+341865
+341866
+341867
+341868
+341869
+341870
+341871
+341872
+341873
+341874
+341875
+341876
+341877
+341878
+341879
+341880
+341881
+341882
+341883
+341884
+341885
+341886
+341887
+341888
+341889
+341890
+341891
+341892
+341893
+341894
+341895
+341896
+341897
+341898
+341899
+341900
+341901
+341902
+341903
+341904
+341905
+341906
+341907
+341908
+341909
+341910
+341911
+341912
+341913
+341914
+341915
+341916
+341917
+341918
+341919
+341920
+341921
+341922
+341923
+341924
+341925
+341926
+341927
+341928
+341929
+341930
+341931
+341932
+341933
+341934
+341935
+341936
+341937
+341938
+341939
+341940
+341941
+341942
+341943
+341944
+341945
+341946
+341947
+341948
+341949
+341950
+341951
+341952
+341953
+341954
+341955
+341956
+341957
+341958
+341959
+341960
+341961
+341962
+341963
+341964
+341965
+341966
+341967
+341968
+341969
+341970
+341971
+341972
+341973
+341974
+341975
+341976
+341977
+341978
+341979
+341980
+341981
+341982
+341983
+341984
+341985
+341986
+341987
+341988
+341989
+341990
+341991
+341992
+341993
+341994
+341995
+341996
+341997
+341998
+341999
+342000
+342001
+342002
+342003
+342004
+342005
+342006
+342007
+342008
+342009
+342010
+342011
+342012
+342013
+342014
+342015
+342016
+342017
+342018
+342019
+342020
+342021
+342022
+342023
+342024
+342025
+342026
+342027
+342028
+342029
+342030
+342031
+342032
+342033
+342034
+342035
+342036
+342037
+342038
+342039
+342040
+342041
+342042
+342043
+342044
+342045
+342046
+342047
+342048
+342049
+342050
+342051
+342052
+342053
+342054
+342055
+342056
+342057
+342058
+342059
+342060
+342061
+342062
+342063
+342064
+342065
+342066
+342067
+342068
+342069
+342070
+342071
+342072
+342073
+342074
+342075
+342076
+342077
+342078
+342079
+342080
+342081
+342082
+342083
+342084
+342085
+342086
+342087
+342088
+342089
+342090
+342091
+342092
+342093
+342094
+342095
+342096
+342097
+342098
+342099
+342100
+342101
+342102
+342103
+342104
+342105
+342106
+342107
+342108
+342109
+342110
+342111
+342112
+342113
+342114
+342115
+342116
+342117
+342118
+342119
+342120
+342121
+342122
+342123
+342124
+342125
+342126
+342127
+342128
+342129
+342130
+342131
+342132
+342133
+342134
+342135
+342136
+342137
+342138
+342139
+342140
+342141
+342142
+342143
+342144
+342145
+342146
+342147
+342148
+342149
+342150
+342151
+342152
+342153
+342154
+342155
+342156
+342157
+342158
+342159
+342160
+342161
+342162
+342163
+342164
+342165
+342166
+342167
+342168
+342169
+342170
+342171
+342172
+342173
+342174
+342175
+342176
+342177
+342178
+342179
+342180
+342181
+342182
+342183
+342184
+342185
+342186
+342187
+342188
+342189
+342190
+342191
+342192
+342193
+342194
+342195
+342196
+342197
+342198
+342199
+342200
+342201
+342202
+342203
+342204
+342205
+342206
+342207
+342208
+342209
+342210
+342211
+342212
+342213
+342214
+342215
+342216
+342217
+342218
+342219
+342220
+342221
+342222
+342223
+342224
+342225
+342226
+342227
+342228
+342229
+342230
+342231
+342232
+342233
+342234
+342235
+342236
+342237
+342238
+342239
+342240
+342241
+342242
+342243
+342244
+342245
+342246
+342247
+342248
+342249
+342250
+342251
+342252
+342253
+342254
+342255
+342256
+342257
+342258
+342259
+342260
+342261
+342262
+342263
+342264
+342265
+342266
+342267
+342268
+342269
+342270
+342271
+342272
+342273
+342274
+342275
+342276
+342277
+342278
+342279
+342280
+342281
+342282
+342283
+342284
+342285
+342286
+342287
+342288
+342289
+342290
+342291
+342292
+342293
+342294
+342295
+342296
+342297
+342298
+342299
+342300
+342301
+342302
+342303
+342304
+342305
+342306
+342307
+342308
+342309
+342310
+342311
+342312
+342313
+342314
+342315
+342316
+342317
+342318
+342319
+342320
+342321
+342322
+342323
+342324
+342325
+342326
+342327
+342328
+342329
+342330
+342331
+342332
+342333
+342334
+342335
+342336
+342337
+342338
+342339
+342340
+342341
+342342
+342343
+342344
+342345
+342346
+342347
+342348
+342349
+342350
+342351
+342352
+342353
+342354
+342355
+342356
+342357
+342358
+342359
+342360
+342361
+342362
+342363
+342364
+342365
+342366
+342367
+342368
+342369
+342370
+342371
+342372
+342373
+342374
+342375
+342376
+342377
+342378
+342379
+342380
+342381
+342382
+342383
+342384
+342385
+342386
+342387
+342388
+342389
+342390
+342391
+342392
+342393
+342394
+342395
+342396
+342397
+342398
+342399
+342400
+342401
+342402
+342403
+342404
+342405
+342406
+342407
+342408
+342409
+342410
+342411
+342412
+342413
+342414
+342415
+342416
+342417
+342418
+342419
+342420
+342421
+342422
+342423
+342424
+342425
+342426
+342427
+342428
+342429
+342430
+342431
+342432
+342433
+342434
+342435
+342436
+342437
+342438
+342439
+342440
+342441
+342442
+342443
+342444
+342445
+342446
+342447
+342448
+342449
+342450
+342451
+342452
+342453
+342454
+342455
+342456
+342457
+342458
+342459
+342460
+342461
+342462
+342463
+342464
+342465
+342466
+342467
+342468
+342469
+342470
+342471
+342472
+342473
+342474
+342475
+342476
+342477
+342478
+342479
+342480
+342481
+342482
+342483
+342484
+342485
+342486
+342487
+342488
+342489
+342490
+342491
+342492
+342493
+342494
+342495
+342496
+342497
+342498
+342499
+342500
+342501
+342502
+342503
+342504
+342505
+342506
+342507
+342508
+342509
+342510
+342511
+342512
+342513
+342514
+342515
+342516
+342517
+342518
+342519
+342520
+342521
+342522
+342523
+342524
+342525
+342526
+342527
+342528
+342529
+342530
+342531
+342532
+342533
+342534
+342535
+342536
+342537
+342538
+342539
+342540
+342541
+342542
+342543
+342544
+342545
+342546
+342547
+342548
+342549
+342550
+342551
+342552
+342553
+342554
+342555
+342556
+342557
+342558
+342559
+342560
+342561
+342562
+342563
+342564
+342565
+342566
+342567
+342568
+342569
+342570
+342571
+342572
+342573
+342574
+342575
+342576
+342577
+342578
+342579
+342580
+342581
+342582
+342583
+342584
+342585
+342586
+342587
+342588
+342589
+342590
+342591
+342592
+342593
+342594
+342595
+342596
+342597
+342598
+342599
+342600
+342601
+342602
+342603
+342604
+342605
+342606
+342607
+342608
+342609
+342610
+342611
+342612
+342613
+342614
+342615
+342616
+342617
+342618
+342619
+342620
+342621
+342622
+342623
+342624
+342625
+342626
+342627
+342628
+342629
+342630
+342631
+342632
+342633
+342634
+342635
+342636
+342637
+342638
+342639
+342640
+342641
+342642
+342643
+342644
+342645
+342646
+342647
+342648
+342649
+342650
+342651
+342652
+342653
+342654
+342655
+342656
+342657
+342658
+342659
+342660
+342661
+342662
+342663
+342664
+342665
+342666
+342667
+342668
+342669
+342670
+342671
+342672
+342673
+342674
+342675
+342676
+342677
+342678
+342679
+342680
+342681
+342682
+342683
+342684
+342685
+342686
+342687
+342688
+342689
+342690
+342691
+342692
+342693
+342694
+342695
+342696
+342697
+342698
+342699
+342700
+342701
+342702
+342703
+342704
+342705
+342706
+342707
+342708
+342709
+342710
+342711
+342712
+342713
+342714
+342715
+342716
+342717
+342718
+342719
+342720
+342721
+342722
+342723
+342724
+342725
+342726
+342727
+342728
+342729
+342730
+342731
+342732
+342733
+342734
+342735
+342736
+342737
+342738
+342739
+342740
+342741
+342742
+342743
+342744
+342745
+342746
+342747
+342748
+342749
+342750
+342751
+342752
+342753
+342754
+342755
+342756
+342757
+342758
+342759
+342760
+342761
+342762
+342763
+342764
+342765
+342766
+342767
+342768
+342769
+342770
+342771
+342772
+342773
+342774
+342775
+342776
+342777
+342778
+342779
+342780
+342781
+342782
+342783
+342784
+342785
+342786
+342787
+342788
+342789
+342790
+342791
+342792
+342793
+342794
+342795
+342796
+342797
+342798
+342799
+342800
+342801
+342802
+342803
+342804
+342805
+342806
+342807
+342808
+342809
+342810
+342811
+342812
+342813
+342814
+342815
+342816
+342817
+342818
+342819
+342820
+342821
+342822
+342823
+342824
+342825
+342826
+342827
+342828
+342829
+342830
+342831
+342832
+342833
+342834
+342835
+342836
+342837
+342838
+342839
+342840
+342841
+342842
+342843
+342844
+342845
+342846
+342847
+342848
+342849
+342850
+342851
+342852
+342853
+342854
+342855
+342856
+342857
+342858
+342859
+342860
+342861
+342862
+342863
+342864
+342865
+342866
+342867
+342868
+342869
+342870
+342871
+342872
+342873
+342874
+342875
+342876
+342877
+342878
+342879
+342880
+342881
+342882
+342883
+342884
+342885
+342886
+342887
+342888
+342889
+342890
+342891
+342892
+342893
+342894
+342895
+342896
+342897
+342898
+342899
+342900
+342901
+342902
+342903
+342904
+342905
+342906
+342907
+342908
+342909
+342910
+342911
+342912
+342913
+342914
+342915
+342916
+342917
+342918
+342919
+342920
+342921
+342922
+342923
+342924
+342925
+342926
+342927
+342928
+342929
+342930
+342931
+342932
+342933
+342934
+342935
+342936
+342937
+342938
+342939
+342940
+342941
+342942
+342943
+342944
+342945
+342946
+342947
+342948
+342949
+342950
+342951
+342952
+342953
+342954
+342955
+342956
+342957
+342958
+342959
+342960
+342961
+342962
+342963
+342964
+342965
+342966
+342967
+342968
+342969
+342970
+342971
+342972
+342973
+342974
+342975
+342976
+342977
+342978
+342979
+342980
+342981
+342982
+342983
+342984
+342985
+342986
+342987
+342988
+342989
+342990
+342991
+342992
+342993
+342994
+342995
+342996
+342997
+342998
+342999
+343000
+343001
+343002
+343003
+343004
+343005
+343006
+343007
+343008
+343009
+343010
+343011
+343012
+343013
+343014
+343015
+343016
+343017
+343018
+343019
+343020
+343021
+343022
+343023
+343024
+343025
+343026
+343027
+343028
+343029
+343030
+343031
+343032
+343033
+343034
+343035
+343036
+343037
+343038
+343039
+343040
+343041
+343042
+343043
+343044
+343045
+343046
+343047
+343048
+343049
+343050
+343051
+343052
+343053
+343054
+343055
+343056
+343057
+343058
+343059
+343060
+343061
+343062
+343063
+343064
+343065
+343066
+343067
+343068
+343069
+343070
+343071
+343072
+343073
+343074
+343075
+343076
+343077
+343078
+343079
+343080
+343081
+343082
+343083
+343084
+343085
+343086
+343087
+343088
+343089
+343090
+343091
+343092
+343093
+343094
+343095
+343096
+343097
+343098
+343099
+343100
+343101
+343102
+343103
+343104
+343105
+343106
+343107
+343108
+343109
+343110
+343111
+343112
+343113
+343114
+343115
+343116
+343117
+343118
+343119
+343120
+343121
+343122
+343123
+343124
+343125
+343126
+343127
+343128
+343129
+343130
+343131
+343132
+343133
+343134
+343135
+343136
+343137
+343138
+343139
+343140
+343141
+343142
+343143
+343144
+343145
+343146
+343147
+343148
+343149
+343150
+343151
+343152
+343153
+343154
+343155
+343156
+343157
+343158
+343159
+343160
+343161
+343162
+343163
+343164
+343165
+343166
+343167
+343168
+343169
+343170
+343171
+343172
+343173
+343174
+343175
+343176
+343177
+343178
+343179
+343180
+343181
+343182
+343183
+343184
+343185
+343186
+343187
+343188
+343189
+343190
+343191
+343192
+343193
+343194
+343195
+343196
+343197
+343198
+343199
+343200
+343201
+343202
+343203
+343204
+343205
+343206
+343207
+343208
+343209
+343210
+343211
+343212
+343213
+343214
+343215
+343216
+343217
+343218
+343219
+343220
+343221
+343222
+343223
+343224
+343225
+343226
+343227
+343228
+343229
+343230
+343231
+343232
+343233
+343234
+343235
+343236
+343237
+343238
+343239
+343240
+343241
+343242
+343243
+343244
+343245
+343246
+343247
+343248
+343249
+343250
+343251
+343252
+343253
+343254
+343255
+343256
+343257
+343258
+343259
+343260
+343261
+343262
+343263
+343264
+343265
+343266
+343267
+343268
+343269
+343270
+343271
+343272
+343273
+343274
+343275
+343276
+343277
+343278
+343279
+343280
+343281
+343282
+343283
+343284
+343285
+343286
+343287
+343288
+343289
+343290
+343291
+343292
+343293
+343294
+343295
+343296
+343297
+343298
+343299
+343300
+343301
+343302
+343303
+343304
+343305
+343306
+343307
+343308
+343309
+343310
+343311
+343312
+343313
+343314
+343315
+343316
+343317
+343318
+343319
+343320
+343321
+343322
+343323
+343324
+343325
+343326
+343327
+343328
+343329
+343330
+343331
+343332
+343333
+343334
+343335
+343336
+343337
+343338
+343339
+343340
+343341
+343342
+343343
+343344
+343345
+343346
+343347
+343348
+343349
+343350
+343351
+343352
+343353
+343354
+343355
+343356
+343357
+343358
+343359
+343360
+343361
+343362
+343363
+343364
+343365
+343366
+343367
+343368
+343369
+343370
+343371
+343372
+343373
+343374
+343375
+343376
+343377
+343378
+343379
+343380
+343381
+343382
+343383
+343384
+343385
+343386
+343387
+343388
+343389
+343390
+343391
+343392
+343393
+343394
+343395
+343396
+343397
+343398
+343399
+343400
+343401
+343402
+343403
+343404
+343405
+343406
+343407
+343408
+343409
+343410
+343411
+343412
+343413
+343414
+343415
+343416
+343417
+343418
+343419
+343420
+343421
+343422
+343423
+343424
+343425
+343426
+343427
+343428
+343429
+343430
+343431
+343432
+343433
+343434
+343435
+343436
+343437
+343438
+343439
+343440
+343441
+343442
+343443
+343444
+343445
+343446
+343447
+343448
+343449
+343450
+343451
+343452
+343453
+343454
+343455
+343456
+343457
+343458
+343459
+343460
+343461
+343462
+343463
+343464
+343465
+343466
+343467
+343468
+343469
+343470
+343471
+343472
+343473
+343474
+343475
+343476
+343477
+343478
+343479
+343480
+343481
+343482
+343483
+343484
+343485
+343486
+343487
+343488
+343489
+343490
+343491
+343492
+343493
+343494
+343495
+343496
+343497
+343498
+343499
+343500
+343501
+343502
+343503
+343504
+343505
+343506
+343507
+343508
+343509
+343510
+343511
+343512
+343513
+343514
+343515
+343516
+343517
+343518
+343519
+343520
+343521
+343522
+343523
+343524
+343525
+343526
+343527
+343528
+343529
+343530
+343531
+343532
+343533
+343534
+343535
+343536
+343537
+343538
+343539
+343540
+343541
+343542
+343543
+343544
+343545
+343546
+343547
+343548
+343549
+343550
+343551
+343552
+343553
+343554
+343555
+343556
+343557
+343558
+343559
+343560
+343561
+343562
+343563
+343564
+343565
+343566
+343567
+343568
+343569
+343570
+343571
+343572
+343573
+343574
+343575
+343576
+343577
+343578
+343579
+343580
+343581
+343582
+343583
+343584
+343585
+343586
+343587
+343588
+343589
+343590
+343591
+343592
+343593
+343594
+343595
+343596
+343597
+343598
+343599
+343600
+343601
+343602
+343603
+343604
+343605
+343606
+343607
+343608
+343609
+343610
+343611
+343612
+343613
+343614
+343615
+343616
+343617
+343618
+343619
+343620
+343621
+343622
+343623
+343624
+343625
+343626
+343627
+343628
+343629
+343630
+343631
+343632
+343633
+343634
+343635
+343636
+343637
+343638
+343639
+343640
+343641
+343642
+343643
+343644
+343645
+343646
+343647
+343648
+343649
+343650
+343651
+343652
+343653
+343654
+343655
+343656
+343657
+343658
+343659
+343660
+343661
+343662
+343663
+343664
+343665
+343666
+343667
+343668
+343669
+343670
+343671
+343672
+343673
+343674
+343675
+343676
+343677
+343678
+343679
+343680
+343681
+343682
+343683
+343684
+343685
+343686
+343687
+343688
+343689
+343690
+343691
+343692
+343693
+343694
+343695
+343696
+343697
+343698
+343699
+343700
+343701
+343702
+343703
+343704
+343705
+343706
+343707
+343708
+343709
+343710
+343711
+343712
+343713
+343714
+343715
+343716
+343717
+343718
+343719
+343720
+343721
+343722
+343723
+343724
+343725
+343726
+343727
+343728
+343729
+343730
+343731
+343732
+343733
+343734
+343735
+343736
+343737
+343738
+343739
+343740
+343741
+343742
+343743
+343744
+343745
+343746
+343747
+343748
+343749
+343750
+343751
+343752
+343753
+343754
+343755
+343756
+343757
+343758
+343759
+343760
+343761
+343762
+343763
+343764
+343765
+343766
+343767
+343768
+343769
+343770
+343771
+343772
+343773
+343774
+343775
+343776
+343777
+343778
+343779
+343780
+343781
+343782
+343783
+343784
+343785
+343786
+343787
+343788
+343789
+343790
+343791
+343792
+343793
+343794
+343795
+343796
+343797
+343798
+343799
+343800
+343801
+343802
+343803
+343804
+343805
+343806
+343807
+343808
+343809
+343810
+343811
+343812
+343813
+343814
+343815
+343816
+343817
+343818
+343819
+343820
+343821
+343822
+343823
+343824
+343825
+343826
+343827
+343828
+343829
+343830
+343831
+343832
+343833
+343834
+343835
+343836
+343837
+343838
+343839
+343840
+343841
+343842
+343843
+343844
+343845
+343846
+343847
+343848
+343849
+343850
+343851
+343852
+343853
+343854
+343855
+343856
+343857
+343858
+343859
+343860
+343861
+343862
+343863
+343864
+343865
+343866
+343867
+343868
+343869
+343870
+343871
+343872
+343873
+343874
+343875
+343876
+343877
+343878
+343879
+343880
+343881
+343882
+343883
+343884
+343885
+343886
+343887
+343888
+343889
+343890
+343891
+343892
+343893
+343894
+343895
+343896
+343897
+343898
+343899
+343900
+343901
+343902
+343903
+343904
+343905
+343906
+343907
+343908
+343909
+343910
+343911
+343912
+343913
+343914
+343915
+343916
+343917
+343918
+343919
+343920
+343921
+343922
+343923
+343924
+343925
+343926
+343927
+343928
+343929
+343930
+343931
+343932
+343933
+343934
+343935
+343936
+343937
+343938
+343939
+343940
+343941
+343942
+343943
+343944
+343945
+343946
+343947
+343948
+343949
+343950
+343951
+343952
+343953
+343954
+343955
+343956
+343957
+343958
+343959
+343960
+343961
+343962
+343963
+343964
+343965
+343966
+343967
+343968
+343969
+343970
+343971
+343972
+343973
+343974
+343975
+343976
+343977
+343978
+343979
+343980
+343981
+343982
+343983
+343984
+343985
+343986
+343987
+343988
+343989
+343990
+343991
+343992
+343993
+343994
+343995
+343996
+343997
+343998
+343999
+344000
+344001
+344002
+344003
+344004
+344005
+344006
+344007
+344008
+344009
+344010
+344011
+344012
+344013
+344014
+344015
+344016
+344017
+344018
+344019
+344020
+344021
+344022
+344023
+344024
+344025
+344026
+344027
+344028
+344029
+344030
+344031
+344032
+344033
+344034
+344035
+344036
+344037
+344038
+344039
+344040
+344041
+344042
+344043
+344044
+344045
+344046
+344047
+344048
+344049
+344050
+344051
+344052
+344053
+344054
+344055
+344056
+344057
+344058
+344059
+344060
+344061
+344062
+344063
+344064
+344065
+344066
+344067
+344068
+344069
+344070
+344071
+344072
+344073
+344074
+344075
+344076
+344077
+344078
+344079
+344080
+344081
+344082
+344083
+344084
+344085
+344086
+344087
+344088
+344089
+344090
+344091
+344092
+344093
+344094
+344095
+344096
+344097
+344098
+344099
+344100
+344101
+344102
+344103
+344104
+344105
+344106
+344107
+344108
+344109
+344110
+344111
+344112
+344113
+344114
+344115
+344116
+344117
+344118
+344119
+344120
+344121
+344122
+344123
+344124
+344125
+344126
+344127
+344128
+344129
+344130
+344131
+344132
+344133
+344134
+344135
+344136
+344137
+344138
+344139
+344140
+344141
+344142
+344143
+344144
+344145
+344146
+344147
+344148
+344149
+344150
+344151
+344152
+344153
+344154
+344155
+344156
+344157
+344158
+344159
+344160
+344161
+344162
+344163
+344164
+344165
+344166
+344167
+344168
+344169
+344170
+344171
+344172
+344173
+344174
+344175
+344176
+344177
+344178
+344179
+344180
+344181
+344182
+344183
+344184
+344185
+344186
+344187
+344188
+344189
+344190
+344191
+344192
+344193
+344194
+344195
+344196
+344197
+344198
+344199
+344200
+344201
+344202
+344203
+344204
+344205
+344206
+344207
+344208
+344209
+344210
+344211
+344212
+344213
+344214
+344215
+344216
+344217
+344218
+344219
+344220
+344221
+344222
+344223
+344224
+344225
+344226
+344227
+344228
+344229
+344230
+344231
+344232
+344233
+344234
+344235
+344236
+344237
+344238
+344239
+344240
+344241
+344242
+344243
+344244
+344245
+344246
+344247
+344248
+344249
+344250
+344251
+344252
+344253
+344254
+344255
+344256
+344257
+344258
+344259
+344260
+344261
+344262
+344263
+344264
+344265
+344266
+344267
+344268
+344269
+344270
+344271
+344272
+344273
+344274
+344275
+344276
+344277
+344278
+344279
+344280
+344281
+344282
+344283
+344284
+344285
+344286
+344287
+344288
+344289
+344290
+344291
+344292
+344293
+344294
+344295
+344296
+344297
+344298
+344299
+344300
+344301
+344302
+344303
+344304
+344305
+344306
+344307
+344308
+344309
+344310
+344311
+344312
+344313
+344314
+344315
+344316
+344317
+344318
+344319
+344320
+344321
+344322
+344323
+344324
+344325
+344326
+344327
+344328
+344329
+344330
+344331
+344332
+344333
+344334
+344335
+344336
+344337
+344338
+344339
+344340
+344341
+344342
+344343
+344344
+344345
+344346
+344347
+344348
+344349
+344350
+344351
+344352
+344353
+344354
+344355
+344356
+344357
+344358
+344359
+344360
+344361
+344362
+344363
+344364
+344365
+344366
+344367
+344368
+344369
+344370
+344371
+344372
+344373
+344374
+344375
+344376
+344377
+344378
+344379
+344380
+344381
+344382
+344383
+344384
+344385
+344386
+344387
+344388
+344389
+344390
+344391
+344392
+344393
+344394
+344395
+344396
+344397
+344398
+344399
+344400
+344401
+344402
+344403
+344404
+344405
+344406
+344407
+344408
+344409
+344410
+344411
+344412
+344413
+344414
+344415
+344416
+344417
+344418
+344419
+344420
+344421
+344422
+344423
+344424
+344425
+344426
+344427
+344428
+344429
+344430
+344431
+344432
+344433
+344434
+344435
+344436
+344437
+344438
+344439
+344440
+344441
+344442
+344443
+344444
+344445
+344446
+344447
+344448
+344449
+344450
+344451
+344452
+344453
+344454
+344455
+344456
+344457
+344458
+344459
+344460
+344461
+344462
+344463
+344464
+344465
+344466
+344467
+344468
+344469
+344470
+344471
+344472
+344473
+344474
+344475
+344476
+344477
+344478
+344479
+344480
+344481
+344482
+344483
+344484
+344485
+344486
+344487
+344488
+344489
+344490
+344491
+344492
+344493
+344494
+344495
+344496
+344497
+344498
+344499
+344500
+344501
+344502
+344503
+344504
+344505
+344506
+344507
+344508
+344509
+344510
+344511
+344512
+344513
+344514
+344515
+344516
+344517
+344518
+344519
+344520
+344521
+344522
+344523
+344524
+344525
+344526
+344527
+344528
+344529
+344530
+344531
+344532
+344533
+344534
+344535
+344536
+344537
+344538
+344539
+344540
+344541
+344542
+344543
+344544
+344545
+344546
+344547
+344548
+344549
+344550
+344551
+344552
+344553
+344554
+344555
+344556
+344557
+344558
+344559
+344560
+344561
+344562
+344563
+344564
+344565
+344566
+344567
+344568
+344569
+344570
+344571
+344572
+344573
+344574
+344575
+344576
+344577
+344578
+344579
+344580
+344581
+344582
+344583
+344584
+344585
+344586
+344587
+344588
+344589
+344590
+344591
+344592
+344593
+344594
+344595
+344596
+344597
+344598
+344599
+344600
+344601
+344602
+344603
+344604
+344605
+344606
+344607
+344608
+344609
+344610
+344611
+344612
+344613
+344614
+344615
+344616
+344617
+344618
+344619
+344620
+344621
+344622
+344623
+344624
+344625
+344626
+344627
+344628
+344629
+344630
+344631
+344632
+344633
+344634
+344635
+344636
+344637
+344638
+344639
+344640
+344641
+344642
+344643
+344644
+344645
+344646
+344647
+344648
+344649
+344650
+344651
+344652
+344653
+344654
+344655
+344656
+344657
+344658
+344659
+344660
+344661
+344662
+344663
+344664
+344665
+344666
+344667
+344668
+344669
+344670
+344671
+344672
+344673
+344674
+344675
+344676
+344677
+344678
+344679
+344680
+344681
+344682
+344683
+344684
+344685
+344686
+344687
+344688
+344689
+344690
+344691
+344692
+344693
+344694
+344695
+344696
+344697
+344698
+344699
+344700
+344701
+344702
+344703
+344704
+344705
+344706
+344707
+344708
+344709
+344710
+344711
+344712
+344713
+344714
+344715
+344716
+344717
+344718
+344719
+344720
+344721
+344722
+344723
+344724
+344725
+344726
+344727
+344728
+344729
+344730
+344731
+344732
+344733
+344734
+344735
+344736
+344737
+344738
+344739
+344740
+344741
+344742
+344743
+344744
+344745
+344746
+344747
+344748
+344749
+344750
+344751
+344752
+344753
+344754
+344755
+344756
+344757
+344758
+344759
+344760
+344761
+344762
+344763
+344764
+344765
+344766
+344767
+344768
+344769
+344770
+344771
+344772
+344773
+344774
+344775
+344776
+344777
+344778
+344779
+344780
+344781
+344782
+344783
+344784
+344785
+344786
+344787
+344788
+344789
+344790
+344791
+344792
+344793
+344794
+344795
+344796
+344797
+344798
+344799
+344800
+344801
+344802
+344803
+344804
+344805
+344806
+344807
+344808
+344809
+344810
+344811
+344812
+344813
+344814
+344815
+344816
+344817
+344818
+344819
+344820
+344821
+344822
+344823
+344824
+344825
+344826
+344827
+344828
+344829
+344830
+344831
+344832
+344833
+344834
+344835
+344836
+344837
+344838
+344839
+344840
+344841
+344842
+344843
+344844
+344845
+344846
+344847
+344848
+344849
+344850
+344851
+344852
+344853
+344854
+344855
+344856
+344857
+344858
+344859
+344860
+344861
+344862
+344863
+344864
+344865
+344866
+344867
+344868
+344869
+344870
+344871
+344872
+344873
+344874
+344875
+344876
+344877
+344878
+344879
+344880
+344881
+344882
+344883
+344884
+344885
+344886
+344887
+344888
+344889
+344890
+344891
+344892
+344893
+344894
+344895
+344896
+344897
+344898
+344899
+344900
+344901
+344902
+344903
+344904
+344905
+344906
+344907
+344908
+344909
+344910
+344911
+344912
+344913
+344914
+344915
+344916
+344917
+344918
+344919
+344920
+344921
+344922
+344923
+344924
+344925
+344926
+344927
+344928
+344929
+344930
+344931
+344932
+344933
+344934
+344935
+344936
+344937
+344938
+344939
+344940
+344941
+344942
+344943
+344944
+344945
+344946
+344947
+344948
+344949
+344950
+344951
+344952
+344953
+344954
+344955
+344956
+344957
+344958
+344959
+344960
+344961
+344962
+344963
+344964
+344965
+344966
+344967
+344968
+344969
+344970
+344971
+344972
+344973
+344974
+344975
+344976
+344977
+344978
+344979
+344980
+344981
+344982
+344983
+344984
+344985
+344986
+344987
+344988
+344989
+344990
+344991
+344992
+344993
+344994
+344995
+344996
+344997
+344998
+344999
+345000
+345001
+345002
+345003
+345004
+345005
+345006
+345007
+345008
+345009
+345010
+345011
+345012
+345013
+345014
+345015
+345016
+345017
+345018
+345019
+345020
+345021
+345022
+345023
+345024
+345025
+345026
+345027
+345028
+345029
+345030
+345031
+345032
+345033
+345034
+345035
+345036
+345037
+345038
+345039
+345040
+345041
+345042
+345043
+345044
+345045
+345046
+345047
+345048
+345049
+345050
+345051
+345052
+345053
+345054
+345055
+345056
+345057
+345058
+345059
+345060
+345061
+345062
+345063
+345064
+345065
+345066
+345067
+345068
+345069
+345070
+345071
+345072
+345073
+345074
+345075
+345076
+345077
+345078
+345079
+345080
+345081
+345082
+345083
+345084
+345085
+345086
+345087
+345088
+345089
+345090
+345091
+345092
+345093
+345094
+345095
+345096
+345097
+345098
+345099
+345100
+345101
+345102
+345103
+345104
+345105
+345106
+345107
+345108
+345109
+345110
+345111
+345112
+345113
+345114
+345115
+345116
+345117
+345118
+345119
+345120
+345121
+345122
+345123
+345124
+345125
+345126
+345127
+345128
+345129
+345130
+345131
+345132
+345133
+345134
+345135
+345136
+345137
+345138
+345139
+345140
+345141
+345142
+345143
+345144
+345145
+345146
+345147
+345148
+345149
+345150
+345151
+345152
+345153
+345154
+345155
+345156
+345157
+345158
+345159
+345160
+345161
+345162
+345163
+345164
+345165
+345166
+345167
+345168
+345169
+345170
+345171
+345172
+345173
+345174
+345175
+345176
+345177
+345178
+345179
+345180
+345181
+345182
+345183
+345184
+345185
+345186
+345187
+345188
+345189
+345190
+345191
+345192
+345193
+345194
+345195
+345196
+345197
+345198
+345199
+345200
+345201
+345202
+345203
+345204
+345205
+345206
+345207
+345208
+345209
+345210
+345211
+345212
+345213
+345214
+345215
+345216
+345217
+345218
+345219
+345220
+345221
+345222
+345223
+345224
+345225
+345226
+345227
+345228
+345229
+345230
+345231
+345232
+345233
+345234
+345235
+345236
+345237
+345238
+345239
+345240
+345241
+345242
+345243
+345244
+345245
+345246
+345247
+345248
+345249
+345250
+345251
+345252
+345253
+345254
+345255
+345256
+345257
+345258
+345259
+345260
+345261
+345262
+345263
+345264
+345265
+345266
+345267
+345268
+345269
+345270
+345271
+345272
+345273
+345274
+345275
+345276
+345277
+345278
+345279
+345280
+345281
+345282
+345283
+345284
+345285
+345286
+345287
+345288
+345289
+345290
+345291
+345292
+345293
+345294
+345295
+345296
+345297
+345298
+345299
+345300
+345301
+345302
+345303
+345304
+345305
+345306
+345307
+345308
+345309
+345310
+345311
+345312
+345313
+345314
+345315
+345316
+345317
+345318
+345319
+345320
+345321
+345322
+345323
+345324
+345325
+345326
+345327
+345328
+345329
+345330
+345331
+345332
+345333
+345334
+345335
+345336
+345337
+345338
+345339
+345340
+345341
+345342
+345343
+345344
+345345
+345346
+345347
+345348
+345349
+345350
+345351
+345352
+345353
+345354
+345355
+345356
+345357
+345358
+345359
+345360
+345361
+345362
+345363
+345364
+345365
+345366
+345367
+345368
+345369
+345370
+345371
+345372
+345373
+345374
+345375
+345376
+345377
+345378
+345379
+345380
+345381
+345382
+345383
+345384
+345385
+345386
+345387
+345388
+345389
+345390
+345391
+345392
+345393
+345394
+345395
+345396
+345397
+345398
+345399
+345400
+345401
+345402
+345403
+345404
+345405
+345406
+345407
+345408
+345409
+345410
+345411
+345412
+345413
+345414
+345415
+345416
+345417
+345418
+345419
+345420
+345421
+345422
+345423
+345424
+345425
+345426
+345427
+345428
+345429
+345430
+345431
+345432
+345433
+345434
+345435
+345436
+345437
+345438
+345439
+345440
+345441
+345442
+345443
+345444
+345445
+345446
+345447
+345448
+345449
+345450
+345451
+345452
+345453
+345454
+345455
+345456
+345457
+345458
+345459
+345460
+345461
+345462
+345463
+345464
+345465
+345466
+345467
+345468
+345469
+345470
+345471
+345472
+345473
+345474
+345475
+345476
+345477
+345478
+345479
+345480
+345481
+345482
+345483
+345484
+345485
+345486
+345487
+345488
+345489
+345490
+345491
+345492
+345493
+345494
+345495
+345496
+345497
+345498
+345499
+345500
+345501
+345502
+345503
+345504
+345505
+345506
+345507
+345508
+345509
+345510
+345511
+345512
+345513
+345514
+345515
+345516
+345517
+345518
+345519
+345520
+345521
+345522
+345523
+345524
+345525
+345526
+345527
+345528
+345529
+345530
+345531
+345532
+345533
+345534
+345535
+345536
+345537
+345538
+345539
+345540
+345541
+345542
+345543
+345544
+345545
+345546
+345547
+345548
+345549
+345550
+345551
+345552
+345553
+345554
+345555
+345556
+345557
+345558
+345559
+345560
+345561
+345562
+345563
+345564
+345565
+345566
+345567
+345568
+345569
+345570
+345571
+345572
+345573
+345574
+345575
+345576
+345577
+345578
+345579
+345580
+345581
+345582
+345583
+345584
+345585
+345586
+345587
+345588
+345589
+345590
+345591
+345592
+345593
+345594
+345595
+345596
+345597
+345598
+345599
+345600
+345601
+345602
+345603
+345604
+345605
+345606
+345607
+345608
+345609
+345610
+345611
+345612
+345613
+345614
+345615
+345616
+345617
+345618
+345619
+345620
+345621
+345622
+345623
+345624
+345625
+345626
+345627
+345628
+345629
+345630
+345631
+345632
+345633
+345634
+345635
+345636
+345637
+345638
+345639
+345640
+345641
+345642
+345643
+345644
+345645
+345646
+345647
+345648
+345649
+345650
+345651
+345652
+345653
+345654
+345655
+345656
+345657
+345658
+345659
+345660
+345661
+345662
+345663
+345664
+345665
+345666
+345667
+345668
+345669
+345670
+345671
+345672
+345673
+345674
+345675
+345676
+345677
+345678
+345679
+345680
+345681
+345682
+345683
+345684
+345685
+345686
+345687
+345688
+345689
+345690
+345691
+345692
+345693
+345694
+345695
+345696
+345697
+345698
+345699
+345700
+345701
+345702
+345703
+345704
+345705
+345706
+345707
+345708
+345709
+345710
+345711
+345712
+345713
+345714
+345715
+345716
+345717
+345718
+345719
+345720
+345721
+345722
+345723
+345724
+345725
+345726
+345727
+345728
+345729
+345730
+345731
+345732
+345733
+345734
+345735
+345736
+345737
+345738
+345739
+345740
+345741
+345742
+345743
+345744
+345745
+345746
+345747
+345748
+345749
+345750
+345751
+345752
+345753
+345754
+345755
+345756
+345757
+345758
+345759
+345760
+345761
+345762
+345763
+345764
+345765
+345766
+345767
+345768
+345769
+345770
+345771
+345772
+345773
+345774
+345775
+345776
+345777
+345778
+345779
+345780
+345781
+345782
+345783
+345784
+345785
+345786
+345787
+345788
+345789
+345790
+345791
+345792
+345793
+345794
+345795
+345796
+345797
+345798
+345799
+345800
+345801
+345802
+345803
+345804
+345805
+345806
+345807
+345808
+345809
+345810
+345811
+345812
+345813
+345814
+345815
+345816
+345817
+345818
+345819
+345820
+345821
+345822
+345823
+345824
+345825
+345826
+345827
+345828
+345829
+345830
+345831
+345832
+345833
+345834
+345835
+345836
+345837
+345838
+345839
+345840
+345841
+345842
+345843
+345844
+345845
+345846
+345847
+345848
+345849
+345850
+345851
+345852
+345853
+345854
+345855
+345856
+345857
+345858
+345859
+345860
+345861
+345862
+345863
+345864
+345865
+345866
+345867
+345868
+345869
+345870
+345871
+345872
+345873
+345874
+345875
+345876
+345877
+345878
+345879
+345880
+345881
+345882
+345883
+345884
+345885
+345886
+345887
+345888
+345889
+345890
+345891
+345892
+345893
+345894
+345895
+345896
+345897
+345898
+345899
+345900
+345901
+345902
+345903
+345904
+345905
+345906
+345907
+345908
+345909
+345910
+345911
+345912
+345913
+345914
+345915
+345916
+345917
+345918
+345919
+345920
+345921
+345922
+345923
+345924
+345925
+345926
+345927
+345928
+345929
+345930
+345931
+345932
+345933
+345934
+345935
+345936
+345937
+345938
+345939
+345940
+345941
+345942
+345943
+345944
+345945
+345946
+345947
+345948
+345949
+345950
+345951
+345952
+345953
+345954
+345955
+345956
+345957
+345958
+345959
+345960
+345961
+345962
+345963
+345964
+345965
+345966
+345967
+345968
+345969
+345970
+345971
+345972
+345973
+345974
+345975
+345976
+345977
+345978
+345979
+345980
+345981
+345982
+345983
+345984
+345985
+345986
+345987
+345988
+345989
+345990
+345991
+345992
+345993
+345994
+345995
+345996
+345997
+345998
+345999
+346000
+346001
+346002
+346003
+346004
+346005
+346006
+346007
+346008
+346009
+346010
+346011
+346012
+346013
+346014
+346015
+346016
+346017
+346018
+346019
+346020
+346021
+346022
+346023
+346024
+346025
+346026
+346027
+346028
+346029
+346030
+346031
+346032
+346033
+346034
+346035
+346036
+346037
+346038
+346039
+346040
+346041
+346042
+346043
+346044
+346045
+346046
+346047
+346048
+346049
+346050
+346051
+346052
+346053
+346054
+346055
+346056
+346057
+346058
+346059
+346060
+346061
+346062
+346063
+346064
+346065
+346066
+346067
+346068
+346069
+346070
+346071
+346072
+346073
+346074
+346075
+346076
+346077
+346078
+346079
+346080
+346081
+346082
+346083
+346084
+346085
+346086
+346087
+346088
+346089
+346090
+346091
+346092
+346093
+346094
+346095
+346096
+346097
+346098
+346099
+346100
+346101
+346102
+346103
+346104
+346105
+346106
+346107
+346108
+346109
+346110
+346111
+346112
+346113
+346114
+346115
+346116
+346117
+346118
+346119
+346120
+346121
+346122
+346123
+346124
+346125
+346126
+346127
+346128
+346129
+346130
+346131
+346132
+346133
+346134
+346135
+346136
+346137
+346138
+346139
+346140
+346141
+346142
+346143
+346144
+346145
+346146
+346147
+346148
+346149
+346150
+346151
+346152
+346153
+346154
+346155
+346156
+346157
+346158
+346159
+346160
+346161
+346162
+346163
+346164
+346165
+346166
+346167
+346168
+346169
+346170
+346171
+346172
+346173
+346174
+346175
+346176
+346177
+346178
+346179
+346180
+346181
+346182
+346183
+346184
+346185
+346186
+346187
+346188
+346189
+346190
+346191
+346192
+346193
+346194
+346195
+346196
+346197
+346198
+346199
+346200
+346201
+346202
+346203
+346204
+346205
+346206
+346207
+346208
+346209
+346210
+346211
+346212
+346213
+346214
+346215
+346216
+346217
+346218
+346219
+346220
+346221
+346222
+346223
+346224
+346225
+346226
+346227
+346228
+346229
+346230
+346231
+346232
+346233
+346234
+346235
+346236
+346237
+346238
+346239
+346240
+346241
+346242
+346243
+346244
+346245
+346246
+346247
+346248
+346249
+346250
+346251
+346252
+346253
+346254
+346255
+346256
+346257
+346258
+346259
+346260
+346261
+346262
+346263
+346264
+346265
+346266
+346267
+346268
+346269
+346270
+346271
+346272
+346273
+346274
+346275
+346276
+346277
+346278
+346279
+346280
+346281
+346282
+346283
+346284
+346285
+346286
+346287
+346288
+346289
+346290
+346291
+346292
+346293
+346294
+346295
+346296
+346297
+346298
+346299
+346300
+346301
+346302
+346303
+346304
+346305
+346306
+346307
+346308
+346309
+346310
+346311
+346312
+346313
+346314
+346315
+346316
+346317
+346318
+346319
+346320
+346321
+346322
+346323
+346324
+346325
+346326
+346327
+346328
+346329
+346330
+346331
+346332
+346333
+346334
+346335
+346336
+346337
+346338
+346339
+346340
+346341
+346342
+346343
+346344
+346345
+346346
+346347
+346348
+346349
+346350
+346351
+346352
+346353
+346354
+346355
+346356
+346357
+346358
+346359
+346360
+346361
+346362
+346363
+346364
+346365
+346366
+346367
+346368
+346369
+346370
+346371
+346372
+346373
+346374
+346375
+346376
+346377
+346378
+346379
+346380
+346381
+346382
+346383
+346384
+346385
+346386
+346387
+346388
+346389
+346390
+346391
+346392
+346393
+346394
+346395
+346396
+346397
+346398
+346399
+346400
+346401
+346402
+346403
+346404
+346405
+346406
+346407
+346408
+346409
+346410
+346411
+346412
+346413
+346414
+346415
+346416
+346417
+346418
+346419
+346420
+346421
+346422
+346423
+346424
+346425
+346426
+346427
+346428
+346429
+346430
+346431
+346432
+346433
+346434
+346435
+346436
+346437
+346438
+346439
+346440
+346441
+346442
+346443
+346444
+346445
+346446
+346447
+346448
+346449
+346450
+346451
+346452
+346453
+346454
+346455
+346456
+346457
+346458
+346459
+346460
+346461
+346462
+346463
+346464
+346465
+346466
+346467
+346468
+346469
+346470
+346471
+346472
+346473
+346474
+346475
+346476
+346477
+346478
+346479
+346480
+346481
+346482
+346483
+346484
+346485
+346486
+346487
+346488
+346489
+346490
+346491
+346492
+346493
+346494
+346495
+346496
+346497
+346498
+346499
+346500
+346501
+346502
+346503
+346504
+346505
+346506
+346507
+346508
+346509
+346510
+346511
+346512
+346513
+346514
+346515
+346516
+346517
+346518
+346519
+346520
+346521
+346522
+346523
+346524
+346525
+346526
+346527
+346528
+346529
+346530
+346531
+346532
+346533
+346534
+346535
+346536
+346537
+346538
+346539
+346540
+346541
+346542
+346543
+346544
+346545
+346546
+346547
+346548
+346549
+346550
+346551
+346552
+346553
+346554
+346555
+346556
+346557
+346558
+346559
+346560
+346561
+346562
+346563
+346564
+346565
+346566
+346567
+346568
+346569
+346570
+346571
+346572
+346573
+346574
+346575
+346576
+346577
+346578
+346579
+346580
+346581
+346582
+346583
+346584
+346585
+346586
+346587
+346588
+346589
+346590
+346591
+346592
+346593
+346594
+346595
+346596
+346597
+346598
+346599
+346600
+346601
+346602
+346603
+346604
+346605
+346606
+346607
+346608
+346609
+346610
+346611
+346612
+346613
+346614
+346615
+346616
+346617
+346618
+346619
+346620
+346621
+346622
+346623
+346624
+346625
+346626
+346627
+346628
+346629
+346630
+346631
+346632
+346633
+346634
+346635
+346636
+346637
+346638
+346639
+346640
+346641
+346642
+346643
+346644
+346645
+346646
+346647
+346648
+346649
+346650
+346651
+346652
+346653
+346654
+346655
+346656
+346657
+346658
+346659
+346660
+346661
+346662
+346663
+346664
+346665
+346666
+346667
+346668
+346669
+346670
+346671
+346672
+346673
+346674
+346675
+346676
+346677
+346678
+346679
+346680
+346681
+346682
+346683
+346684
+346685
+346686
+346687
+346688
+346689
+346690
+346691
+346692
+346693
+346694
+346695
+346696
+346697
+346698
+346699
+346700
+346701
+346702
+346703
+346704
+346705
+346706
+346707
+346708
+346709
+346710
+346711
+346712
+346713
+346714
+346715
+346716
+346717
+346718
+346719
+346720
+346721
+346722
+346723
+346724
+346725
+346726
+346727
+346728
+346729
+346730
+346731
+346732
+346733
+346734
+346735
+346736
+346737
+346738
+346739
+346740
+346741
+346742
+346743
+346744
+346745
+346746
+346747
+346748
+346749
+346750
+346751
+346752
+346753
+346754
+346755
+346756
+346757
+346758
+346759
+346760
+346761
+346762
+346763
+346764
+346765
+346766
+346767
+346768
+346769
+346770
+346771
+346772
+346773
+346774
+346775
+346776
+346777
+346778
+346779
+346780
+346781
+346782
+346783
+346784
+346785
+346786
+346787
+346788
+346789
+346790
+346791
+346792
+346793
+346794
+346795
+346796
+346797
+346798
+346799
+346800
+346801
+346802
+346803
+346804
+346805
+346806
+346807
+346808
+346809
+346810
+346811
+346812
+346813
+346814
+346815
+346816
+346817
+346818
+346819
+346820
+346821
+346822
+346823
+346824
+346825
+346826
+346827
+346828
+346829
+346830
+346831
+346832
+346833
+346834
+346835
+346836
+346837
+346838
+346839
+346840
+346841
+346842
+346843
+346844
+346845
+346846
+346847
+346848
+346849
+346850
+346851
+346852
+346853
+346854
+346855
+346856
+346857
+346858
+346859
+346860
+346861
+346862
+346863
+346864
+346865
+346866
+346867
+346868
+346869
+346870
+346871
+346872
+346873
+346874
+346875
+346876
+346877
+346878
+346879
+346880
+346881
+346882
+346883
+346884
+346885
+346886
+346887
+346888
+346889
+346890
+346891
+346892
+346893
+346894
+346895
+346896
+346897
+346898
+346899
+346900
+346901
+346902
+346903
+346904
+346905
+346906
+346907
+346908
+346909
+346910
+346911
+346912
+346913
+346914
+346915
+346916
+346917
+346918
+346919
+346920
+346921
+346922
+346923
+346924
+346925
+346926
+346927
+346928
+346929
+346930
+346931
+346932
+346933
+346934
+346935
+346936
+346937
+346938
+346939
+346940
+346941
+346942
+346943
+346944
+346945
+346946
+346947
+346948
+346949
+346950
+346951
+346952
+346953
+346954
+346955
+346956
+346957
+346958
+346959
+346960
+346961
+346962
+346963
+346964
+346965
+346966
+346967
+346968
+346969
+346970
+346971
+346972
+346973
+346974
+346975
+346976
+346977
+346978
+346979
+346980
+346981
+346982
+346983
+346984
+346985
+346986
+346987
+346988
+346989
+346990
+346991
+346992
+346993
+346994
+346995
+346996
+346997
+346998
+346999
+347000
+347001
+347002
+347003
+347004
+347005
+347006
+347007
+347008
+347009
+347010
+347011
+347012
+347013
+347014
+347015
+347016
+347017
+347018
+347019
+347020
+347021
+347022
+347023
+347024
+347025
+347026
+347027
+347028
+347029
+347030
+347031
+347032
+347033
+347034
+347035
+347036
+347037
+347038
+347039
+347040
+347041
+347042
+347043
+347044
+347045
+347046
+347047
+347048
+347049
+347050
+347051
+347052
+347053
+347054
+347055
+347056
+347057
+347058
+347059
+347060
+347061
+347062
+347063
+347064
+347065
+347066
+347067
+347068
+347069
+347070
+347071
+347072
+347073
+347074
+347075
+347076
+347077
+347078
+347079
+347080
+347081
+347082
+347083
+347084
+347085
+347086
+347087
+347088
+347089
+347090
+347091
+347092
+347093
+347094
+347095
+347096
+347097
+347098
+347099
+347100
+347101
+347102
+347103
+347104
+347105
+347106
+347107
+347108
+347109
+347110
+347111
+347112
+347113
+347114
+347115
+347116
+347117
+347118
+347119
+347120
+347121
+347122
+347123
+347124
+347125
+347126
+347127
+347128
+347129
+347130
+347131
+347132
+347133
+347134
+347135
+347136
+347137
+347138
+347139
+347140
+347141
+347142
+347143
+347144
+347145
+347146
+347147
+347148
+347149
+347150
+347151
+347152
+347153
+347154
+347155
+347156
+347157
+347158
+347159
+347160
+347161
+347162
+347163
+347164
+347165
+347166
+347167
+347168
+347169
+347170
+347171
+347172
+347173
+347174
+347175
+347176
+347177
+347178
+347179
+347180
+347181
+347182
+347183
+347184
+347185
+347186
+347187
+347188
+347189
+347190
+347191
+347192
+347193
+347194
+347195
+347196
+347197
+347198
+347199
+347200
+347201
+347202
+347203
+347204
+347205
+347206
+347207
+347208
+347209
+347210
+347211
+347212
+347213
+347214
+347215
+347216
+347217
+347218
+347219
+347220
+347221
+347222
+347223
+347224
+347225
+347226
+347227
+347228
+347229
+347230
+347231
+347232
+347233
+347234
+347235
+347236
+347237
+347238
+347239
+347240
+347241
+347242
+347243
+347244
+347245
+347246
+347247
+347248
+347249
+347250
+347251
+347252
+347253
+347254
+347255
+347256
+347257
+347258
+347259
+347260
+347261
+347262
+347263
+347264
+347265
+347266
+347267
+347268
+347269
+347270
+347271
+347272
+347273
+347274
+347275
+347276
+347277
+347278
+347279
+347280
+347281
+347282
+347283
+347284
+347285
+347286
+347287
+347288
+347289
+347290
+347291
+347292
+347293
+347294
+347295
+347296
+347297
+347298
+347299
+347300
+347301
+347302
+347303
+347304
+347305
+347306
+347307
+347308
+347309
+347310
+347311
+347312
+347313
+347314
+347315
+347316
+347317
+347318
+347319
+347320
+347321
+347322
+347323
+347324
+347325
+347326
+347327
+347328
+347329
+347330
+347331
+347332
+347333
+347334
+347335
+347336
+347337
+347338
+347339
+347340
+347341
+347342
+347343
+347344
+347345
+347346
+347347
+347348
+347349
+347350
+347351
+347352
+347353
+347354
+347355
+347356
+347357
+347358
+347359
+347360
+347361
+347362
+347363
+347364
+347365
+347366
+347367
+347368
+347369
+347370
+347371
+347372
+347373
+347374
+347375
+347376
+347377
+347378
+347379
+347380
+347381
+347382
+347383
+347384
+347385
+347386
+347387
+347388
+347389
+347390
+347391
+347392
+347393
+347394
+347395
+347396
+347397
+347398
+347399
+347400
+347401
+347402
+347403
+347404
+347405
+347406
+347407
+347408
+347409
+347410
+347411
+347412
+347413
+347414
+347415
+347416
+347417
+347418
+347419
+347420
+347421
+347422
+347423
+347424
+347425
+347426
+347427
+347428
+347429
+347430
+347431
+347432
+347433
+347434
+347435
+347436
+347437
+347438
+347439
+347440
+347441
+347442
+347443
+347444
+347445
+347446
+347447
+347448
+347449
+347450
+347451
+347452
+347453
+347454
+347455
+347456
+347457
+347458
+347459
+347460
+347461
+347462
+347463
+347464
+347465
+347466
+347467
+347468
+347469
+347470
+347471
+347472
+347473
+347474
+347475
+347476
+347477
+347478
+347479
+347480
+347481
+347482
+347483
+347484
+347485
+347486
+347487
+347488
+347489
+347490
+347491
+347492
+347493
+347494
+347495
+347496
+347497
+347498
+347499
+347500
+347501
+347502
+347503
+347504
+347505
+347506
+347507
+347508
+347509
+347510
+347511
+347512
+347513
+347514
+347515
+347516
+347517
+347518
+347519
+347520
+347521
+347522
+347523
+347524
+347525
+347526
+347527
+347528
+347529
+347530
+347531
+347532
+347533
+347534
+347535
+347536
+347537
+347538
+347539
+347540
+347541
+347542
+347543
+347544
+347545
+347546
+347547
+347548
+347549
+347550
+347551
+347552
+347553
+347554
+347555
+347556
+347557
+347558
+347559
+347560
+347561
+347562
+347563
+347564
+347565
+347566
+347567
+347568
+347569
+347570
+347571
+347572
+347573
+347574
+347575
+347576
+347577
+347578
+347579
+347580
+347581
+347582
+347583
+347584
+347585
+347586
+347587
+347588
+347589
+347590
+347591
+347592
+347593
+347594
+347595
+347596
+347597
+347598
+347599
+347600
+347601
+347602
+347603
+347604
+347605
+347606
+347607
+347608
+347609
+347610
+347611
+347612
+347613
+347614
+347615
+347616
+347617
+347618
+347619
+347620
+347621
+347622
+347623
+347624
+347625
+347626
+347627
+347628
+347629
+347630
+347631
+347632
+347633
+347634
+347635
+347636
+347637
+347638
+347639
+347640
+347641
+347642
+347643
+347644
+347645
+347646
+347647
+347648
+347649
+347650
+347651
+347652
+347653
+347654
+347655
+347656
+347657
+347658
+347659
+347660
+347661
+347662
+347663
+347664
+347665
+347666
+347667
+347668
+347669
+347670
+347671
+347672
+347673
+347674
+347675
+347676
+347677
+347678
+347679
+347680
+347681
+347682
+347683
+347684
+347685
+347686
+347687
+347688
+347689
+347690
+347691
+347692
+347693
+347694
+347695
+347696
+347697
+347698
+347699
+347700
+347701
+347702
+347703
+347704
+347705
+347706
+347707
+347708
+347709
+347710
+347711
+347712
+347713
+347714
+347715
+347716
+347717
+347718
+347719
+347720
+347721
+347722
+347723
+347724
+347725
+347726
+347727
+347728
+347729
+347730
+347731
+347732
+347733
+347734
+347735
+347736
+347737
+347738
+347739
+347740
+347741
+347742
+347743
+347744
+347745
+347746
+347747
+347748
+347749
+347750
+347751
+347752
+347753
+347754
+347755
+347756
+347757
+347758
+347759
+347760
+347761
+347762
+347763
+347764
+347765
+347766
+347767
+347768
+347769
+347770
+347771
+347772
+347773
+347774
+347775
+347776
+347777
+347778
+347779
+347780
+347781
+347782
+347783
+347784
+347785
+347786
+347787
+347788
+347789
+347790
+347791
+347792
+347793
+347794
+347795
+347796
+347797
+347798
+347799
+347800
+347801
+347802
+347803
+347804
+347805
+347806
+347807
+347808
+347809
+347810
+347811
+347812
+347813
+347814
+347815
+347816
+347817
+347818
+347819
+347820
+347821
+347822
+347823
+347824
+347825
+347826
+347827
+347828
+347829
+347830
+347831
+347832
+347833
+347834
+347835
+347836
+347837
+347838
+347839
+347840
+347841
+347842
+347843
+347844
+347845
+347846
+347847
+347848
+347849
+347850
+347851
+347852
+347853
+347854
+347855
+347856
+347857
+347858
+347859
+347860
+347861
+347862
+347863
+347864
+347865
+347866
+347867
+347868
+347869
+347870
+347871
+347872
+347873
+347874
+347875
+347876
+347877
+347878
+347879
+347880
+347881
+347882
+347883
+347884
+347885
+347886
+347887
+347888
+347889
+347890
+347891
+347892
+347893
+347894
+347895
+347896
+347897
+347898
+347899
+347900
+347901
+347902
+347903
+347904
+347905
+347906
+347907
+347908
+347909
+347910
+347911
+347912
+347913
+347914
+347915
+347916
+347917
+347918
+347919
+347920
+347921
+347922
+347923
+347924
+347925
+347926
+347927
+347928
+347929
+347930
+347931
+347932
+347933
+347934
+347935
+347936
+347937
+347938
+347939
+347940
+347941
+347942
+347943
+347944
+347945
+347946
+347947
+347948
+347949
+347950
+347951
+347952
+347953
+347954
+347955
+347956
+347957
+347958
+347959
+347960
+347961
+347962
+347963
+347964
+347965
+347966
+347967
+347968
+347969
+347970
+347971
+347972
+347973
+347974
+347975
+347976
+347977
+347978
+347979
+347980
+347981
+347982
+347983
+347984
+347985
+347986
+347987
+347988
+347989
+347990
+347991
+347992
+347993
+347994
+347995
+347996
+347997
+347998
+347999
+348000
+348001
+348002
+348003
+348004
+348005
+348006
+348007
+348008
+348009
+348010
+348011
+348012
+348013
+348014
+348015
+348016
+348017
+348018
+348019
+348020
+348021
+348022
+348023
+348024
+348025
+348026
+348027
+348028
+348029
+348030
+348031
+348032
+348033
+348034
+348035
+348036
+348037
+348038
+348039
+348040
+348041
+348042
+348043
+348044
+348045
+348046
+348047
+348048
+348049
+348050
+348051
+348052
+348053
+348054
+348055
+348056
+348057
+348058
+348059
+348060
+348061
+348062
+348063
+348064
+348065
+348066
+348067
+348068
+348069
+348070
+348071
+348072
+348073
+348074
+348075
+348076
+348077
+348078
+348079
+348080
+348081
+348082
+348083
+348084
+348085
+348086
+348087
+348088
+348089
+348090
+348091
+348092
+348093
+348094
+348095
+348096
+348097
+348098
+348099
+348100
+348101
+348102
+348103
+348104
+348105
+348106
+348107
+348108
+348109
+348110
+348111
+348112
+348113
+348114
+348115
+348116
+348117
+348118
+348119
+348120
+348121
+348122
+348123
+348124
+348125
+348126
+348127
+348128
+348129
+348130
+348131
+348132
+348133
+348134
+348135
+348136
+348137
+348138
+348139
+348140
+348141
+348142
+348143
+348144
+348145
+348146
+348147
+348148
+348149
+348150
+348151
+348152
+348153
+348154
+348155
+348156
+348157
+348158
+348159
+348160
+348161
+348162
+348163
+348164
+348165
+348166
+348167
+348168
+348169
+348170
+348171
+348172
+348173
+348174
+348175
+348176
+348177
+348178
+348179
+348180
+348181
+348182
+348183
+348184
+348185
+348186
+348187
+348188
+348189
+348190
+348191
+348192
+348193
+348194
+348195
+348196
+348197
+348198
+348199
+348200
+348201
+348202
+348203
+348204
+348205
+348206
+348207
+348208
+348209
+348210
+348211
+348212
+348213
+348214
+348215
+348216
+348217
+348218
+348219
+348220
+348221
+348222
+348223
+348224
+348225
+348226
+348227
+348228
+348229
+348230
+348231
+348232
+348233
+348234
+348235
+348236
+348237
+348238
+348239
+348240
+348241
+348242
+348243
+348244
+348245
+348246
+348247
+348248
+348249
+348250
+348251
+348252
+348253
+348254
+348255
+348256
+348257
+348258
+348259
+348260
+348261
+348262
+348263
+348264
+348265
+348266
+348267
+348268
+348269
+348270
+348271
+348272
+348273
+348274
+348275
+348276
+348277
+348278
+348279
+348280
+348281
+348282
+348283
+348284
+348285
+348286
+348287
+348288
+348289
+348290
+348291
+348292
+348293
+348294
+348295
+348296
+348297
+348298
+348299
+348300
+348301
+348302
+348303
+348304
+348305
+348306
+348307
+348308
+348309
+348310
+348311
+348312
+348313
+348314
+348315
+348316
+348317
+348318
+348319
+348320
+348321
+348322
+348323
+348324
+348325
+348326
+348327
+348328
+348329
+348330
+348331
+348332
+348333
+348334
+348335
+348336
+348337
+348338
+348339
+348340
+348341
+348342
+348343
+348344
+348345
+348346
+348347
+348348
+348349
+348350
+348351
+348352
+348353
+348354
+348355
+348356
+348357
+348358
+348359
+348360
+348361
+348362
+348363
+348364
+348365
+348366
+348367
+348368
+348369
+348370
+348371
+348372
+348373
+348374
+348375
+348376
+348377
+348378
+348379
+348380
+348381
+348382
+348383
+348384
+348385
+348386
+348387
+348388
+348389
+348390
+348391
+348392
+348393
+348394
+348395
+348396
+348397
+348398
+348399
+348400
+348401
+348402
+348403
+348404
+348405
+348406
+348407
+348408
+348409
+348410
+348411
+348412
+348413
+348414
+348415
+348416
+348417
+348418
+348419
+348420
+348421
+348422
+348423
+348424
+348425
+348426
+348427
+348428
+348429
+348430
+348431
+348432
+348433
+348434
+348435
+348436
+348437
+348438
+348439
+348440
+348441
+348442
+348443
+348444
+348445
+348446
+348447
+348448
+348449
+348450
+348451
+348452
+348453
+348454
+348455
+348456
+348457
+348458
+348459
+348460
+348461
+348462
+348463
+348464
+348465
+348466
+348467
+348468
+348469
+348470
+348471
+348472
+348473
+348474
+348475
+348476
+348477
+348478
+348479
+348480
+348481
+348482
+348483
+348484
+348485
+348486
+348487
+348488
+348489
+348490
+348491
+348492
+348493
+348494
+348495
+348496
+348497
+348498
+348499
+348500
+348501
+348502
+348503
+348504
+348505
+348506
+348507
+348508
+348509
+348510
+348511
+348512
+348513
+348514
+348515
+348516
+348517
+348518
+348519
+348520
+348521
+348522
+348523
+348524
+348525
+348526
+348527
+348528
+348529
+348530
+348531
+348532
+348533
+348534
+348535
+348536
+348537
+348538
+348539
+348540
+348541
+348542
+348543
+348544
+348545
+348546
+348547
+348548
+348549
+348550
+348551
+348552
+348553
+348554
+348555
+348556
+348557
+348558
+348559
+348560
+348561
+348562
+348563
+348564
+348565
+348566
+348567
+348568
+348569
+348570
+348571
+348572
+348573
+348574
+348575
+348576
+348577
+348578
+348579
+348580
+348581
+348582
+348583
+348584
+348585
+348586
+348587
+348588
+348589
+348590
+348591
+348592
+348593
+348594
+348595
+348596
+348597
+348598
+348599
+348600
+348601
+348602
+348603
+348604
+348605
+348606
+348607
+348608
+348609
+348610
+348611
+348612
+348613
+348614
+348615
+348616
+348617
+348618
+348619
+348620
+348621
+348622
+348623
+348624
+348625
+348626
+348627
+348628
+348629
+348630
+348631
+348632
+348633
+348634
+348635
+348636
+348637
+348638
+348639
+348640
+348641
+348642
+348643
+348644
+348645
+348646
+348647
+348648
+348649
+348650
+348651
+348652
+348653
+348654
+348655
+348656
+348657
+348658
+348659
+348660
+348661
+348662
+348663
+348664
+348665
+348666
+348667
+348668
+348669
+348670
+348671
+348672
+348673
+348674
+348675
+348676
+348677
+348678
+348679
+348680
+348681
+348682
+348683
+348684
+348685
+348686
+348687
+348688
+348689
+348690
+348691
+348692
+348693
+348694
+348695
+348696
+348697
+348698
+348699
+348700
+348701
+348702
+348703
+348704
+348705
+348706
+348707
+348708
+348709
+348710
+348711
+348712
+348713
+348714
+348715
+348716
+348717
+348718
+348719
+348720
+348721
+348722
+348723
+348724
+348725
+348726
+348727
+348728
+348729
+348730
+348731
+348732
+348733
+348734
+348735
+348736
+348737
+348738
+348739
+348740
+348741
+348742
+348743
+348744
+348745
+348746
+348747
+348748
+348749
+348750
+348751
+348752
+348753
+348754
+348755
+348756
+348757
+348758
+348759
+348760
+348761
+348762
+348763
+348764
+348765
+348766
+348767
+348768
+348769
+348770
+348771
+348772
+348773
+348774
+348775
+348776
+348777
+348778
+348779
+348780
+348781
+348782
+348783
+348784
+348785
+348786
+348787
+348788
+348789
+348790
+348791
+348792
+348793
+348794
+348795
+348796
+348797
+348798
+348799
+348800
+348801
+348802
+348803
+348804
+348805
+348806
+348807
+348808
+348809
+348810
+348811
+348812
+348813
+348814
+348815
+348816
+348817
+348818
+348819
+348820
+348821
+348822
+348823
+348824
+348825
+348826
+348827
+348828
+348829
+348830
+348831
+348832
+348833
+348834
+348835
+348836
+348837
+348838
+348839
+348840
+348841
+348842
+348843
+348844
+348845
+348846
+348847
+348848
+348849
+348850
+348851
+348852
+348853
+348854
+348855
+348856
+348857
+348858
+348859
+348860
+348861
+348862
+348863
+348864
+348865
+348866
+348867
+348868
+348869
+348870
+348871
+348872
+348873
+348874
+348875
+348876
+348877
+348878
+348879
+348880
+348881
+348882
+348883
+348884
+348885
+348886
+348887
+348888
+348889
+348890
+348891
+348892
+348893
+348894
+348895
+348896
+348897
+348898
+348899
+348900
+348901
+348902
+348903
+348904
+348905
+348906
+348907
+348908
+348909
+348910
+348911
+348912
+348913
+348914
+348915
+348916
+348917
+348918
+348919
+348920
+348921
+348922
+348923
+348924
+348925
+348926
+348927
+348928
+348929
+348930
+348931
+348932
+348933
+348934
+348935
+348936
+348937
+348938
+348939
+348940
+348941
+348942
+348943
+348944
+348945
+348946
+348947
+348948
+348949
+348950
+348951
+348952
+348953
+348954
+348955
+348956
+348957
+348958
+348959
+348960
+348961
+348962
+348963
+348964
+348965
+348966
+348967
+348968
+348969
+348970
+348971
+348972
+348973
+348974
+348975
+348976
+348977
+348978
+348979
+348980
+348981
+348982
+348983
+348984
+348985
+348986
+348987
+348988
+348989
+348990
+348991
+348992
+348993
+348994
+348995
+348996
+348997
+348998
+348999
+349000
+349001
+349002
+349003
+349004
+349005
+349006
+349007
+349008
+349009
+349010
+349011
+349012
+349013
+349014
+349015
+349016
+349017
+349018
+349019
+349020
+349021
+349022
+349023
+349024
+349025
+349026
+349027
+349028
+349029
+349030
+349031
+349032
+349033
+349034
+349035
+349036
+349037
+349038
+349039
+349040
+349041
+349042
+349043
+349044
+349045
+349046
+349047
+349048
+349049
+349050
+349051
+349052
+349053
+349054
+349055
+349056
+349057
+349058
+349059
+349060
+349061
+349062
+349063
+349064
+349065
+349066
+349067
+349068
+349069
+349070
+349071
+349072
+349073
+349074
+349075
+349076
+349077
+349078
+349079
+349080
+349081
+349082
+349083
+349084
+349085
+349086
+349087
+349088
+349089
+349090
+349091
+349092
+349093
+349094
+349095
+349096
+349097
+349098
+349099
+349100
+349101
+349102
+349103
+349104
+349105
+349106
+349107
+349108
+349109
+349110
+349111
+349112
+349113
+349114
+349115
+349116
+349117
+349118
+349119
+349120
+349121
+349122
+349123
+349124
+349125
+349126
+349127
+349128
+349129
+349130
+349131
+349132
+349133
+349134
+349135
+349136
+349137
+349138
+349139
+349140
+349141
+349142
+349143
+349144
+349145
+349146
+349147
+349148
+349149
+349150
+349151
+349152
+349153
+349154
+349155
+349156
+349157
+349158
+349159
+349160
+349161
+349162
+349163
+349164
+349165
+349166
+349167
+349168
+349169
+349170
+349171
+349172
+349173
+349174
+349175
+349176
+349177
+349178
+349179
+349180
+349181
+349182
+349183
+349184
+349185
+349186
+349187
+349188
+349189
+349190
+349191
+349192
+349193
+349194
+349195
+349196
+349197
+349198
+349199
+349200
+349201
+349202
+349203
+349204
+349205
+349206
+349207
+349208
+349209
+349210
+349211
+349212
+349213
+349214
+349215
+349216
+349217
+349218
+349219
+349220
+349221
+349222
+349223
+349224
+349225
+349226
+349227
+349228
+349229
+349230
+349231
+349232
+349233
+349234
+349235
+349236
+349237
+349238
+349239
+349240
+349241
+349242
+349243
+349244
+349245
+349246
+349247
+349248
+349249
+349250
+349251
+349252
+349253
+349254
+349255
+349256
+349257
+349258
+349259
+349260
+349261
+349262
+349263
+349264
+349265
+349266
+349267
+349268
+349269
+349270
+349271
+349272
+349273
+349274
+349275
+349276
+349277
+349278
+349279
+349280
+349281
+349282
+349283
+349284
+349285
+349286
+349287
+349288
+349289
+349290
+349291
+349292
+349293
+349294
+349295
+349296
+349297
+349298
+349299
+349300
+349301
+349302
+349303
+349304
+349305
+349306
+349307
+349308
+349309
+349310
+349311
+349312
+349313
+349314
+349315
+349316
+349317
+349318
+349319
+349320
+349321
+349322
+349323
+349324
+349325
+349326
+349327
+349328
+349329
+349330
+349331
+349332
+349333
+349334
+349335
+349336
+349337
+349338
+349339
+349340
+349341
+349342
+349343
+349344
+349345
+349346
+349347
+349348
+349349
+349350
+349351
+349352
+349353
+349354
+349355
+349356
+349357
+349358
+349359
+349360
+349361
+349362
+349363
+349364
+349365
+349366
+349367
+349368
+349369
+349370
+349371
+349372
+349373
+349374
+349375
+349376
+349377
+349378
+349379
+349380
+349381
+349382
+349383
+349384
+349385
+349386
+349387
+349388
+349389
+349390
+349391
+349392
+349393
+349394
+349395
+349396
+349397
+349398
+349399
+349400
+349401
+349402
+349403
+349404
+349405
+349406
+349407
+349408
+349409
+349410
+349411
+349412
+349413
+349414
+349415
+349416
+349417
+349418
+349419
+349420
+349421
+349422
+349423
+349424
+349425
+349426
+349427
+349428
+349429
+349430
+349431
+349432
+349433
+349434
+349435
+349436
+349437
+349438
+349439
+349440
+349441
+349442
+349443
+349444
+349445
+349446
+349447
+349448
+349449
+349450
+349451
+349452
+349453
+349454
+349455
+349456
+349457
+349458
+349459
+349460
+349461
+349462
+349463
+349464
+349465
+349466
+349467
+349468
+349469
+349470
+349471
+349472
+349473
+349474
+349475
+349476
+349477
+349478
+349479
+349480
+349481
+349482
+349483
+349484
+349485
+349486
+349487
+349488
+349489
+349490
+349491
+349492
+349493
+349494
+349495
+349496
+349497
+349498
+349499
+349500
+349501
+349502
+349503
+349504
+349505
+349506
+349507
+349508
+349509
+349510
+349511
+349512
+349513
+349514
+349515
+349516
+349517
+349518
+349519
+349520
+349521
+349522
+349523
+349524
+349525
+349526
+349527
+349528
+349529
+349530
+349531
+349532
+349533
+349534
+349535
+349536
+349537
+349538
+349539
+349540
+349541
+349542
+349543
+349544
+349545
+349546
+349547
+349548
+349549
+349550
+349551
+349552
+349553
+349554
+349555
+349556
+349557
+349558
+349559
+349560
+349561
+349562
+349563
+349564
+349565
+349566
+349567
+349568
+349569
+349570
+349571
+349572
+349573
+349574
+349575
+349576
+349577
+349578
+349579
+349580
+349581
+349582
+349583
+349584
+349585
+349586
+349587
+349588
+349589
+349590
+349591
+349592
+349593
+349594
+349595
+349596
+349597
+349598
+349599
+349600
+349601
+349602
+349603
+349604
+349605
+349606
+349607
+349608
+349609
+349610
+349611
+349612
+349613
+349614
+349615
+349616
+349617
+349618
+349619
+349620
+349621
+349622
+349623
+349624
+349625
+349626
+349627
+349628
+349629
+349630
+349631
+349632
+349633
+349634
+349635
+349636
+349637
+349638
+349639
+349640
+349641
+349642
+349643
+349644
+349645
+349646
+349647
+349648
+349649
+349650
+349651
+349652
+349653
+349654
+349655
+349656
+349657
+349658
+349659
+349660
+349661
+349662
+349663
+349664
+349665
+349666
+349667
+349668
+349669
+349670
+349671
+349672
+349673
+349674
+349675
+349676
+349677
+349678
+349679
+349680
+349681
+349682
+349683
+349684
+349685
+349686
+349687
+349688
+349689
+349690
+349691
+349692
+349693
+349694
+349695
+349696
+349697
+349698
+349699
+349700
+349701
+349702
+349703
+349704
+349705
+349706
+349707
+349708
+349709
+349710
+349711
+349712
+349713
+349714
+349715
+349716
+349717
+349718
+349719
+349720
+349721
+349722
+349723
+349724
+349725
+349726
+349727
+349728
+349729
+349730
+349731
+349732
+349733
+349734
+349735
+349736
+349737
+349738
+349739
+349740
+349741
+349742
+349743
+349744
+349745
+349746
+349747
+349748
+349749
+349750
+349751
+349752
+349753
+349754
+349755
+349756
+349757
+349758
+349759
+349760
+349761
+349762
+349763
+349764
+349765
+349766
+349767
+349768
+349769
+349770
+349771
+349772
+349773
+349774
+349775
+349776
+349777
+349778
+349779
+349780
+349781
+349782
+349783
+349784
+349785
+349786
+349787
+349788
+349789
+349790
+349791
+349792
+349793
+349794
+349795
+349796
+349797
+349798
+349799
+349800
+349801
+349802
+349803
+349804
+349805
+349806
+349807
+349808
+349809
+349810
+349811
+349812
+349813
+349814
+349815
+349816
+349817
+349818
+349819
+349820
+349821
+349822
+349823
+349824
+349825
+349826
+349827
+349828
+349829
+349830
+349831
+349832
+349833
+349834
+349835
+349836
+349837
+349838
+349839
+349840
+349841
+349842
+349843
+349844
+349845
+349846
+349847
+349848
+349849
+349850
+349851
+349852
+349853
+349854
+349855
+349856
+349857
+349858
+349859
+349860
+349861
+349862
+349863
+349864
+349865
+349866
+349867
+349868
+349869
+349870
+349871
+349872
+349873
+349874
+349875
+349876
+349877
+349878
+349879
+349880
+349881
+349882
+349883
+349884
+349885
+349886
+349887
+349888
+349889
+349890
+349891
+349892
+349893
+349894
+349895
+349896
+349897
+349898
+349899
+349900
+349901
+349902
+349903
+349904
+349905
+349906
+349907
+349908
+349909
+349910
+349911
+349912
+349913
+349914
+349915
+349916
+349917
+349918
+349919
+349920
+349921
+349922
+349923
+349924
+349925
+349926
+349927
+349928
+349929
+349930
+349931
+349932
+349933
+349934
+349935
+349936
+349937
+349938
+349939
+349940
+349941
+349942
+349943
+349944
+349945
+349946
+349947
+349948
+349949
+349950
+349951
+349952
+349953
+349954
+349955
+349956
+349957
+349958
+349959
+349960
+349961
+349962
+349963
+349964
+349965
+349966
+349967
+349968
+349969
+349970
+349971
+349972
+349973
+349974
+349975
+349976
+349977
+349978
+349979
+349980
+349981
+349982
+349983
+349984
+349985
+349986
+349987
+349988
+349989
+349990
+349991
+349992
+349993
+349994
+349995
+349996
+349997
+349998
+349999
+350000
+350001
+350002
+350003
+350004
+350005
+350006
+350007
+350008
+350009
+350010
+350011
+350012
+350013
+350014
+350015
+350016
+350017
+350018
+350019
+350020
+350021
+350022
+350023
+350024
+350025
+350026
+350027
+350028
+350029
+350030
+350031
+350032
+350033
+350034
+350035
+350036
+350037
+350038
+350039
+350040
+350041
+350042
+350043
+350044
+350045
+350046
+350047
+350048
+350049
+350050
+350051
+350052
+350053
+350054
+350055
+350056
+350057
+350058
+350059
+350060
+350061
+350062
+350063
+350064
+350065
+350066
+350067
+350068
+350069
+350070
+350071
+350072
+350073
+350074
+350075
+350076
+350077
+350078
+350079
+350080
+350081
+350082
+350083
+350084
+350085
+350086
+350087
+350088
+350089
+350090
+350091
+350092
+350093
+350094
+350095
+350096
+350097
+350098
+350099
+350100
+350101
+350102
+350103
+350104
+350105
+350106
+350107
+350108
+350109
+350110
+350111
+350112
+350113
+350114
+350115
+350116
+350117
+350118
+350119
+350120
+350121
+350122
+350123
+350124
+350125
+350126
+350127
+350128
+350129
+350130
+350131
+350132
+350133
+350134
+350135
+350136
+350137
+350138
+350139
+350140
+350141
+350142
+350143
+350144
+350145
+350146
+350147
+350148
+350149
+350150
+350151
+350152
+350153
+350154
+350155
+350156
+350157
+350158
+350159
+350160
+350161
+350162
+350163
+350164
+350165
+350166
+350167
+350168
+350169
+350170
+350171
+350172
+350173
+350174
+350175
+350176
+350177
+350178
+350179
+350180
+350181
+350182
+350183
+350184
+350185
+350186
+350187
+350188
+350189
+350190
+350191
+350192
+350193
+350194
+350195
+350196
+350197
+350198
+350199
+350200
+350201
+350202
+350203
+350204
+350205
+350206
+350207
+350208
+350209
+350210
+350211
+350212
+350213
+350214
+350215
+350216
+350217
+350218
+350219
+350220
+350221
+350222
+350223
+350224
+350225
+350226
+350227
+350228
+350229
+350230
+350231
+350232
+350233
+350234
+350235
+350236
+350237
+350238
+350239
+350240
+350241
+350242
+350243
+350244
+350245
+350246
+350247
+350248
+350249
+350250
+350251
+350252
+350253
+350254
+350255
+350256
+350257
+350258
+350259
+350260
+350261
+350262
+350263
+350264
+350265
+350266
+350267
+350268
+350269
+350270
+350271
+350272
+350273
+350274
+350275
+350276
+350277
+350278
+350279
+350280
+350281
+350282
+350283
+350284
+350285
+350286
+350287
+350288
+350289
+350290
+350291
+350292
+350293
+350294
+350295
+350296
+350297
+350298
+350299
+350300
+350301
+350302
+350303
+350304
+350305
+350306
+350307
+350308
+350309
+350310
+350311
+350312
+350313
+350314
+350315
+350316
+350317
+350318
+350319
+350320
+350321
+350322
+350323
+350324
+350325
+350326
+350327
+350328
+350329
+350330
+350331
+350332
+350333
+350334
+350335
+350336
+350337
+350338
+350339
+350340
+350341
+350342
+350343
+350344
+350345
+350346
+350347
+350348
+350349
+350350
+350351
+350352
+350353
+350354
+350355
+350356
+350357
+350358
+350359
+350360
+350361
+350362
+350363
+350364
+350365
+350366
+350367
+350368
+350369
+350370
+350371
+350372
+350373
+350374
+350375
+350376
+350377
+350378
+350379
+350380
+350381
+350382
+350383
+350384
+350385
+350386
+350387
+350388
+350389
+350390
+350391
+350392
+350393
+350394
+350395
+350396
+350397
+350398
+350399
+350400
+350401
+350402
+350403
+350404
+350405
+350406
+350407
+350408
+350409
+350410
+350411
+350412
+350413
+350414
+350415
+350416
+350417
+350418
+350419
+350420
+350421
+350422
+350423
+350424
+350425
+350426
+350427
+350428
+350429
+350430
+350431
+350432
+350433
+350434
+350435
+350436
+350437
+350438
+350439
+350440
+350441
+350442
+350443
+350444
+350445
+350446
+350447
+350448
+350449
+350450
+350451
+350452
+350453
+350454
+350455
+350456
+350457
+350458
+350459
+350460
+350461
+350462
+350463
+350464
+350465
+350466
+350467
+350468
+350469
+350470
+350471
+350472
+350473
+350474
+350475
+350476
+350477
+350478
+350479
+350480
+350481
+350482
+350483
+350484
+350485
+350486
+350487
+350488
+350489
+350490
+350491
+350492
+350493
+350494
+350495
+350496
+350497
+350498
+350499
+350500
+350501
+350502
+350503
+350504
+350505
+350506
+350507
+350508
+350509
+350510
+350511
+350512
+350513
+350514
+350515
+350516
+350517
+350518
+350519
+350520
+350521
+350522
+350523
+350524
+350525
+350526
+350527
+350528
+350529
+350530
+350531
+350532
+350533
+350534
+350535
+350536
+350537
+350538
+350539
+350540
+350541
+350542
+350543
+350544
+350545
+350546
+350547
+350548
+350549
+350550
+350551
+350552
+350553
+350554
+350555
+350556
+350557
+350558
+350559
+350560
+350561
+350562
+350563
+350564
+350565
+350566
+350567
+350568
+350569
+350570
+350571
+350572
+350573
+350574
+350575
+350576
+350577
+350578
+350579
+350580
+350581
+350582
+350583
+350584
+350585
+350586
+350587
+350588
+350589
+350590
+350591
+350592
+350593
+350594
+350595
+350596
+350597
+350598
+350599
+350600
+350601
+350602
+350603
+350604
+350605
+350606
+350607
+350608
+350609
+350610
+350611
+350612
+350613
+350614
+350615
+350616
+350617
+350618
+350619
+350620
+350621
+350622
+350623
+350624
+350625
+350626
+350627
+350628
+350629
+350630
+350631
+350632
+350633
+350634
+350635
+350636
+350637
+350638
+350639
+350640
+350641
+350642
+350643
+350644
+350645
+350646
+350647
+350648
+350649
+350650
+350651
+350652
+350653
+350654
+350655
+350656
+350657
+350658
+350659
+350660
+350661
+350662
+350663
+350664
+350665
+350666
+350667
+350668
+350669
+350670
+350671
+350672
+350673
+350674
+350675
+350676
+350677
+350678
+350679
+350680
+350681
+350682
+350683
+350684
+350685
+350686
+350687
+350688
+350689
+350690
+350691
+350692
+350693
+350694
+350695
+350696
+350697
+350698
+350699
+350700
+350701
+350702
+350703
+350704
+350705
+350706
+350707
+350708
+350709
+350710
+350711
+350712
+350713
+350714
+350715
+350716
+350717
+350718
+350719
+350720
+350721
+350722
+350723
+350724
+350725
+350726
+350727
+350728
+350729
+350730
+350731
+350732
+350733
+350734
+350735
+350736
+350737
+350738
+350739
+350740
+350741
+350742
+350743
+350744
+350745
+350746
+350747
+350748
+350749
+350750
+350751
+350752
+350753
+350754
+350755
+350756
+350757
+350758
+350759
+350760
+350761
+350762
+350763
+350764
+350765
+350766
+350767
+350768
+350769
+350770
+350771
+350772
+350773
+350774
+350775
+350776
+350777
+350778
+350779
+350780
+350781
+350782
+350783
+350784
+350785
+350786
+350787
+350788
+350789
+350790
+350791
+350792
+350793
+350794
+350795
+350796
+350797
+350798
+350799
+350800
+350801
+350802
+350803
+350804
+350805
+350806
+350807
+350808
+350809
+350810
+350811
+350812
+350813
+350814
+350815
+350816
+350817
+350818
+350819
+350820
+350821
+350822
+350823
+350824
+350825
+350826
+350827
+350828
+350829
+350830
+350831
+350832
+350833
+350834
+350835
+350836
+350837
+350838
+350839
+350840
+350841
+350842
+350843
+350844
+350845
+350846
+350847
+350848
+350849
+350850
+350851
+350852
+350853
+350854
+350855
+350856
+350857
+350858
+350859
+350860
+350861
+350862
+350863
+350864
+350865
+350866
+350867
+350868
+350869
+350870
+350871
+350872
+350873
+350874
+350875
+350876
+350877
+350878
+350879
+350880
+350881
+350882
+350883
+350884
+350885
+350886
+350887
+350888
+350889
+350890
+350891
+350892
+350893
+350894
+350895
+350896
+350897
+350898
+350899
+350900
+350901
+350902
+350903
+350904
+350905
+350906
+350907
+350908
+350909
+350910
+350911
+350912
+350913
+350914
+350915
+350916
+350917
+350918
+350919
+350920
+350921
+350922
+350923
+350924
+350925
+350926
+350927
+350928
+350929
+350930
+350931
+350932
+350933
+350934
+350935
+350936
+350937
+350938
+350939
+350940
+350941
+350942
+350943
+350944
+350945
+350946
+350947
+350948
+350949
+350950
+350951
+350952
+350953
+350954
+350955
+350956
+350957
+350958
+350959
+350960
+350961
+350962
+350963
+350964
+350965
+350966
+350967
+350968
+350969
+350970
+350971
+350972
+350973
+350974
+350975
+350976
+350977
+350978
+350979
+350980
+350981
+350982
+350983
+350984
+350985
+350986
+350987
+350988
+350989
+350990
+350991
+350992
+350993
+350994
+350995
+350996
+350997
+350998
+350999
+351000
+351001
+351002
+351003
+351004
+351005
+351006
+351007
+351008
+351009
+351010
+351011
+351012
+351013
+351014
+351015
+351016
+351017
+351018
+351019
+351020
+351021
+351022
+351023
+351024
+351025
+351026
+351027
+351028
+351029
+351030
+351031
+351032
+351033
+351034
+351035
+351036
+351037
+351038
+351039
+351040
+351041
+351042
+351043
+351044
+351045
+351046
+351047
+351048
+351049
+351050
+351051
+351052
+351053
+351054
+351055
+351056
+351057
+351058
+351059
+351060
+351061
+351062
+351063
+351064
+351065
+351066
+351067
+351068
+351069
+351070
+351071
+351072
+351073
+351074
+351075
+351076
+351077
+351078
+351079
+351080
+351081
+351082
+351083
+351084
+351085
+351086
+351087
+351088
+351089
+351090
+351091
+351092
+351093
+351094
+351095
+351096
+351097
+351098
+351099
+351100
+351101
+351102
+351103
+351104
+351105
+351106
+351107
+351108
+351109
+351110
+351111
+351112
+351113
+351114
+351115
+351116
+351117
+351118
+351119
+351120
+351121
+351122
+351123
+351124
+351125
+351126
+351127
+351128
+351129
+351130
+351131
+351132
+351133
+351134
+351135
+351136
+351137
+351138
+351139
+351140
+351141
+351142
+351143
+351144
+351145
+351146
+351147
+351148
+351149
+351150
+351151
+351152
+351153
+351154
+351155
+351156
+351157
+351158
+351159
+351160
+351161
+351162
+351163
+351164
+351165
+351166
+351167
+351168
+351169
+351170
+351171
+351172
+351173
+351174
+351175
+351176
+351177
+351178
+351179
+351180
+351181
+351182
+351183
+351184
+351185
+351186
+351187
+351188
+351189
+351190
+351191
+351192
+351193
+351194
+351195
+351196
+351197
+351198
+351199
+351200
+351201
+351202
+351203
+351204
+351205
+351206
+351207
+351208
+351209
+351210
+351211
+351212
+351213
+351214
+351215
+351216
+351217
+351218
+351219
+351220
+351221
+351222
+351223
+351224
+351225
+351226
+351227
+351228
+351229
+351230
+351231
+351232
+351233
+351234
+351235
+351236
+351237
+351238
+351239
+351240
+351241
+351242
+351243
+351244
+351245
+351246
+351247
+351248
+351249
+351250
+351251
+351252
+351253
+351254
+351255
+351256
+351257
+351258
+351259
+351260
+351261
+351262
+351263
+351264
+351265
+351266
+351267
+351268
+351269
+351270
+351271
+351272
+351273
+351274
+351275
+351276
+351277
+351278
+351279
+351280
+351281
+351282
+351283
+351284
+351285
+351286
+351287
+351288
+351289
+351290
+351291
+351292
+351293
+351294
+351295
+351296
+351297
+351298
+351299
+351300
+351301
+351302
+351303
+351304
+351305
+351306
+351307
+351308
+351309
+351310
+351311
+351312
+351313
+351314
+351315
+351316
+351317
+351318
+351319
+351320
+351321
+351322
+351323
+351324
+351325
+351326
+351327
+351328
+351329
+351330
+351331
+351332
+351333
+351334
+351335
+351336
+351337
+351338
+351339
+351340
+351341
+351342
+351343
+351344
+351345
+351346
+351347
+351348
+351349
+351350
+351351
+351352
+351353
+351354
+351355
+351356
+351357
+351358
+351359
+351360
+351361
+351362
+351363
+351364
+351365
+351366
+351367
+351368
+351369
+351370
+351371
+351372
+351373
+351374
+351375
+351376
+351377
+351378
+351379
+351380
+351381
+351382
+351383
+351384
+351385
+351386
+351387
+351388
+351389
+351390
+351391
+351392
+351393
+351394
+351395
+351396
+351397
+351398
+351399
+351400
+351401
+351402
+351403
+351404
+351405
+351406
+351407
+351408
+351409
+351410
+351411
+351412
+351413
+351414
+351415
+351416
+351417
+351418
+351419
+351420
+351421
+351422
+351423
+351424
+351425
+351426
+351427
+351428
+351429
+351430
+351431
+351432
+351433
+351434
+351435
+351436
+351437
+351438
+351439
+351440
+351441
+351442
+351443
+351444
+351445
+351446
+351447
+351448
+351449
+351450
+351451
+351452
+351453
+351454
+351455
+351456
+351457
+351458
+351459
+351460
+351461
+351462
+351463
+351464
+351465
+351466
+351467
+351468
+351469
+351470
+351471
+351472
+351473
+351474
+351475
+351476
+351477
+351478
+351479
+351480
+351481
+351482
+351483
+351484
+351485
+351486
+351487
+351488
+351489
+351490
+351491
+351492
+351493
+351494
+351495
+351496
+351497
+351498
+351499
+351500
+351501
+351502
+351503
+351504
+351505
+351506
+351507
+351508
+351509
+351510
+351511
+351512
+351513
+351514
+351515
+351516
+351517
+351518
+351519
+351520
+351521
+351522
+351523
+351524
+351525
+351526
+351527
+351528
+351529
+351530
+351531
+351532
+351533
+351534
+351535
+351536
+351537
+351538
+351539
+351540
+351541
+351542
+351543
+351544
+351545
+351546
+351547
+351548
+351549
+351550
+351551
+351552
+351553
+351554
+351555
+351556
+351557
+351558
+351559
+351560
+351561
+351562
+351563
+351564
+351565
+351566
+351567
+351568
+351569
+351570
+351571
+351572
+351573
+351574
+351575
+351576
+351577
+351578
+351579
+351580
+351581
+351582
+351583
+351584
+351585
+351586
+351587
+351588
+351589
+351590
+351591
+351592
+351593
+351594
+351595
+351596
+351597
+351598
+351599
+351600
+351601
+351602
+351603
+351604
+351605
+351606
+351607
+351608
+351609
+351610
+351611
+351612
+351613
+351614
+351615
+351616
+351617
+351618
+351619
+351620
+351621
+351622
+351623
+351624
+351625
+351626
+351627
+351628
+351629
+351630
+351631
+351632
+351633
+351634
+351635
+351636
+351637
+351638
+351639
+351640
+351641
+351642
+351643
+351644
+351645
+351646
+351647
+351648
+351649
+351650
+351651
+351652
+351653
+351654
+351655
+351656
+351657
+351658
+351659
+351660
+351661
+351662
+351663
+351664
+351665
+351666
+351667
+351668
+351669
+351670
+351671
+351672
+351673
+351674
+351675
+351676
+351677
+351678
+351679
+351680
+351681
+351682
+351683
+351684
+351685
+351686
+351687
+351688
+351689
+351690
+351691
+351692
+351693
+351694
+351695
+351696
+351697
+351698
+351699
+351700
+351701
+351702
+351703
+351704
+351705
+351706
+351707
+351708
+351709
+351710
+351711
+351712
+351713
+351714
+351715
+351716
+351717
+351718
+351719
+351720
+351721
+351722
+351723
+351724
+351725
+351726
+351727
+351728
+351729
+351730
+351731
+351732
+351733
+351734
+351735
+351736
+351737
+351738
+351739
+351740
+351741
+351742
+351743
+351744
+351745
+351746
+351747
+351748
+351749
+351750
+351751
+351752
+351753
+351754
+351755
+351756
+351757
+351758
+351759
+351760
+351761
+351762
+351763
+351764
+351765
+351766
+351767
+351768
+351769
+351770
+351771
+351772
+351773
+351774
+351775
+351776
+351777
+351778
+351779
+351780
+351781
+351782
+351783
+351784
+351785
+351786
+351787
+351788
+351789
+351790
+351791
+351792
+351793
+351794
+351795
+351796
+351797
+351798
+351799
+351800
+351801
+351802
+351803
+351804
+351805
+351806
+351807
+351808
+351809
+351810
+351811
+351812
+351813
+351814
+351815
+351816
+351817
+351818
+351819
+351820
+351821
+351822
+351823
+351824
+351825
+351826
+351827
+351828
+351829
+351830
+351831
+351832
+351833
+351834
+351835
+351836
+351837
+351838
+351839
+351840
+351841
+351842
+351843
+351844
+351845
+351846
+351847
+351848
+351849
+351850
+351851
+351852
+351853
+351854
+351855
+351856
+351857
+351858
+351859
+351860
+351861
+351862
+351863
+351864
+351865
+351866
+351867
+351868
+351869
+351870
+351871
+351872
+351873
+351874
+351875
+351876
+351877
+351878
+351879
+351880
+351881
+351882
+351883
+351884
+351885
+351886
+351887
+351888
+351889
+351890
+351891
+351892
+351893
+351894
+351895
+351896
+351897
+351898
+351899
+351900
+351901
+351902
+351903
+351904
+351905
+351906
+351907
+351908
+351909
+351910
+351911
+351912
+351913
+351914
+351915
+351916
+351917
+351918
+351919
+351920
+351921
+351922
+351923
+351924
+351925
+351926
+351927
+351928
+351929
+351930
+351931
+351932
+351933
+351934
+351935
+351936
+351937
+351938
+351939
+351940
+351941
+351942
+351943
+351944
+351945
+351946
+351947
+351948
+351949
+351950
+351951
+351952
+351953
+351954
+351955
+351956
+351957
+351958
+351959
+351960
+351961
+351962
+351963
+351964
+351965
+351966
+351967
+351968
+351969
+351970
+351971
+351972
+351973
+351974
+351975
+351976
+351977
+351978
+351979
+351980
+351981
+351982
+351983
+351984
+351985
+351986
+351987
+351988
+351989
+351990
+351991
+351992
+351993
+351994
+351995
+351996
+351997
+351998
+351999
+352000
+352001
+352002
+352003
+352004
+352005
+352006
+352007
+352008
+352009
+352010
+352011
+352012
+352013
+352014
+352015
+352016
+352017
+352018
+352019
+352020
+352021
+352022
+352023
+352024
+352025
+352026
+352027
+352028
+352029
+352030
+352031
+352032
+352033
+352034
+352035
+352036
+352037
+352038
+352039
+352040
+352041
+352042
+352043
+352044
+352045
+352046
+352047
+352048
+352049
+352050
+352051
+352052
+352053
+352054
+352055
+352056
+352057
+352058
+352059
+352060
+352061
+352062
+352063
+352064
+352065
+352066
+352067
+352068
+352069
+352070
+352071
+352072
+352073
+352074
+352075
+352076
+352077
+352078
+352079
+352080
+352081
+352082
+352083
+352084
+352085
+352086
+352087
+352088
+352089
+352090
+352091
+352092
+352093
+352094
+352095
+352096
+352097
+352098
+352099
+352100
+352101
+352102
+352103
+352104
+352105
+352106
+352107
+352108
+352109
+352110
+352111
+352112
+352113
+352114
+352115
+352116
+352117
+352118
+352119
+352120
+352121
+352122
+352123
+352124
+352125
+352126
+352127
+352128
+352129
+352130
+352131
+352132
+352133
+352134
+352135
+352136
+352137
+352138
+352139
+352140
+352141
+352142
+352143
+352144
+352145
+352146
+352147
+352148
+352149
+352150
+352151
+352152
+352153
+352154
+352155
+352156
+352157
+352158
+352159
+352160
+352161
+352162
+352163
+352164
+352165
+352166
+352167
+352168
+352169
+352170
+352171
+352172
+352173
+352174
+352175
+352176
+352177
+352178
+352179
+352180
+352181
+352182
+352183
+352184
+352185
+352186
+352187
+352188
+352189
+352190
+352191
+352192
+352193
+352194
+352195
+352196
+352197
+352198
+352199
+352200
+352201
+352202
+352203
+352204
+352205
+352206
+352207
+352208
+352209
+352210
+352211
+352212
+352213
+352214
+352215
+352216
+352217
+352218
+352219
+352220
+352221
+352222
+352223
+352224
+352225
+352226
+352227
+352228
+352229
+352230
+352231
+352232
+352233
+352234
+352235
+352236
+352237
+352238
+352239
+352240
+352241
+352242
+352243
+352244
+352245
+352246
+352247
+352248
+352249
+352250
+352251
+352252
+352253
+352254
+352255
+352256
+352257
+352258
+352259
+352260
+352261
+352262
+352263
+352264
+352265
+352266
+352267
+352268
+352269
+352270
+352271
+352272
+352273
+352274
+352275
+352276
+352277
+352278
+352279
+352280
+352281
+352282
+352283
+352284
+352285
+352286
+352287
+352288
+352289
+352290
+352291
+352292
+352293
+352294
+352295
+352296
+352297
+352298
+352299
+352300
+352301
+352302
+352303
+352304
+352305
+352306
+352307
+352308
+352309
+352310
+352311
+352312
+352313
+352314
+352315
+352316
+352317
+352318
+352319
+352320
+352321
+352322
+352323
+352324
+352325
+352326
+352327
+352328
+352329
+352330
+352331
+352332
+352333
+352334
+352335
+352336
+352337
+352338
+352339
+352340
+352341
+352342
+352343
+352344
+352345
+352346
+352347
+352348
+352349
+352350
+352351
+352352
+352353
+352354
+352355
+352356
+352357
+352358
+352359
+352360
+352361
+352362
+352363
+352364
+352365
+352366
+352367
+352368
+352369
+352370
+352371
+352372
+352373
+352374
+352375
+352376
+352377
+352378
+352379
+352380
+352381
+352382
+352383
+352384
+352385
+352386
+352387
+352388
+352389
+352390
+352391
+352392
+352393
+352394
+352395
+352396
+352397
+352398
+352399
+352400
+352401
+352402
+352403
+352404
+352405
+352406
+352407
+352408
+352409
+352410
+352411
+352412
+352413
+352414
+352415
+352416
+352417
+352418
+352419
+352420
+352421
+352422
+352423
+352424
+352425
+352426
+352427
+352428
+352429
+352430
+352431
+352432
+352433
+352434
+352435
+352436
+352437
+352438
+352439
+352440
+352441
+352442
+352443
+352444
+352445
+352446
+352447
+352448
+352449
+352450
+352451
+352452
+352453
+352454
+352455
+352456
+352457
+352458
+352459
+352460
+352461
+352462
+352463
+352464
+352465
+352466
+352467
+352468
+352469
+352470
+352471
+352472
+352473
+352474
+352475
+352476
+352477
+352478
+352479
+352480
+352481
+352482
+352483
+352484
+352485
+352486
+352487
+352488
+352489
+352490
+352491
+352492
+352493
+352494
+352495
+352496
+352497
+352498
+352499
+352500
+352501
+352502
+352503
+352504
+352505
+352506
+352507
+352508
+352509
+352510
+352511
+352512
+352513
+352514
+352515
+352516
+352517
+352518
+352519
+352520
+352521
+352522
+352523
+352524
+352525
+352526
+352527
+352528
+352529
+352530
+352531
+352532
+352533
+352534
+352535
+352536
+352537
+352538
+352539
+352540
+352541
+352542
+352543
+352544
+352545
+352546
+352547
+352548
+352549
+352550
+352551
+352552
+352553
+352554
+352555
+352556
+352557
+352558
+352559
+352560
+352561
+352562
+352563
+352564
+352565
+352566
+352567
+352568
+352569
+352570
+352571
+352572
+352573
+352574
+352575
+352576
+352577
+352578
+352579
+352580
+352581
+352582
+352583
+352584
+352585
+352586
+352587
+352588
+352589
+352590
+352591
+352592
+352593
+352594
+352595
+352596
+352597
+352598
+352599
+352600
+352601
+352602
+352603
+352604
+352605
+352606
+352607
+352608
+352609
+352610
+352611
+352612
+352613
+352614
+352615
+352616
+352617
+352618
+352619
+352620
+352621
+352622
+352623
+352624
+352625
+352626
+352627
+352628
+352629
+352630
+352631
+352632
+352633
+352634
+352635
+352636
+352637
+352638
+352639
+352640
+352641
+352642
+352643
+352644
+352645
+352646
+352647
+352648
+352649
+352650
+352651
+352652
+352653
+352654
+352655
+352656
+352657
+352658
+352659
+352660
+352661
+352662
+352663
+352664
+352665
+352666
+352667
+352668
+352669
+352670
+352671
+352672
+352673
+352674
+352675
+352676
+352677
+352678
+352679
+352680
+352681
+352682
+352683
+352684
+352685
+352686
+352687
+352688
+352689
+352690
+352691
+352692
+352693
+352694
+352695
+352696
+352697
+352698
+352699
+352700
+352701
+352702
+352703
+352704
+352705
+352706
+352707
+352708
+352709
+352710
+352711
+352712
+352713
+352714
+352715
+352716
+352717
+352718
+352719
+352720
+352721
+352722
+352723
+352724
+352725
+352726
+352727
+352728
+352729
+352730
+352731
+352732
+352733
+352734
+352735
+352736
+352737
+352738
+352739
+352740
+352741
+352742
+352743
+352744
+352745
+352746
+352747
+352748
+352749
+352750
+352751
+352752
+352753
+352754
+352755
+352756
+352757
+352758
+352759
+352760
+352761
+352762
+352763
+352764
+352765
+352766
+352767
+352768
+352769
+352770
+352771
+352772
+352773
+352774
+352775
+352776
+352777
+352778
+352779
+352780
+352781
+352782
+352783
+352784
+352785
+352786
+352787
+352788
+352789
+352790
+352791
+352792
+352793
+352794
+352795
+352796
+352797
+352798
+352799
+352800
+352801
+352802
+352803
+352804
+352805
+352806
+352807
+352808
+352809
+352810
+352811
+352812
+352813
+352814
+352815
+352816
+352817
+352818
+352819
+352820
+352821
+352822
+352823
+352824
+352825
+352826
+352827
+352828
+352829
+352830
+352831
+352832
+352833
+352834
+352835
+352836
+352837
+352838
+352839
+352840
+352841
+352842
+352843
+352844
+352845
+352846
+352847
+352848
+352849
+352850
+352851
+352852
+352853
+352854
+352855
+352856
+352857
+352858
+352859
+352860
+352861
+352862
+352863
+352864
+352865
+352866
+352867
+352868
+352869
+352870
+352871
+352872
+352873
+352874
+352875
+352876
+352877
+352878
+352879
+352880
+352881
+352882
+352883
+352884
+352885
+352886
+352887
+352888
+352889
+352890
+352891
+352892
+352893
+352894
+352895
+352896
+352897
+352898
+352899
+352900
+352901
+352902
+352903
+352904
+352905
+352906
+352907
+352908
+352909
+352910
+352911
+352912
+352913
+352914
+352915
+352916
+352917
+352918
+352919
+352920
+352921
+352922
+352923
+352924
+352925
+352926
+352927
+352928
+352929
+352930
+352931
+352932
+352933
+352934
+352935
+352936
+352937
+352938
+352939
+352940
+352941
+352942
+352943
+352944
+352945
+352946
+352947
+352948
+352949
+352950
+352951
+352952
+352953
+352954
+352955
+352956
+352957
+352958
+352959
+352960
+352961
+352962
+352963
+352964
+352965
+352966
+352967
+352968
+352969
+352970
+352971
+352972
+352973
+352974
+352975
+352976
+352977
+352978
+352979
+352980
+352981
+352982
+352983
+352984
+352985
+352986
+352987
+352988
+352989
+352990
+352991
+352992
+352993
+352994
+352995
+352996
+352997
+352998
+352999
+353000
+353001
+353002
+353003
+353004
+353005
+353006
+353007
+353008
+353009
+353010
+353011
+353012
+353013
+353014
+353015
+353016
+353017
+353018
+353019
+353020
+353021
+353022
+353023
+353024
+353025
+353026
+353027
+353028
+353029
+353030
+353031
+353032
+353033
+353034
+353035
+353036
+353037
+353038
+353039
+353040
+353041
+353042
+353043
+353044
+353045
+353046
+353047
+353048
+353049
+353050
+353051
+353052
+353053
+353054
+353055
+353056
+353057
+353058
+353059
+353060
+353061
+353062
+353063
+353064
+353065
+353066
+353067
+353068
+353069
+353070
+353071
+353072
+353073
+353074
+353075
+353076
+353077
+353078
+353079
+353080
+353081
+353082
+353083
+353084
+353085
+353086
+353087
+353088
+353089
+353090
+353091
+353092
+353093
+353094
+353095
+353096
+353097
+353098
+353099
+353100
+353101
+353102
+353103
+353104
+353105
+353106
+353107
+353108
+353109
+353110
+353111
+353112
+353113
+353114
+353115
+353116
+353117
+353118
+353119
+353120
+353121
+353122
+353123
+353124
+353125
+353126
+353127
+353128
+353129
+353130
+353131
+353132
+353133
+353134
+353135
+353136
+353137
+353138
+353139
+353140
+353141
+353142
+353143
+353144
+353145
+353146
+353147
+353148
+353149
+353150
+353151
+353152
+353153
+353154
+353155
+353156
+353157
+353158
+353159
+353160
+353161
+353162
+353163
+353164
+353165
+353166
+353167
+353168
+353169
+353170
+353171
+353172
+353173
+353174
+353175
+353176
+353177
+353178
+353179
+353180
+353181
+353182
+353183
+353184
+353185
+353186
+353187
+353188
+353189
+353190
+353191
+353192
+353193
+353194
+353195
+353196
+353197
+353198
+353199
+353200
+353201
+353202
+353203
+353204
+353205
+353206
+353207
+353208
+353209
+353210
+353211
+353212
+353213
+353214
+353215
+353216
+353217
+353218
+353219
+353220
+353221
+353222
+353223
+353224
+353225
+353226
+353227
+353228
+353229
+353230
+353231
+353232
+353233
+353234
+353235
+353236
+353237
+353238
+353239
+353240
+353241
+353242
+353243
+353244
+353245
+353246
+353247
+353248
+353249
+353250
+353251
+353252
+353253
+353254
+353255
+353256
+353257
+353258
+353259
+353260
+353261
+353262
+353263
+353264
+353265
+353266
+353267
+353268
+353269
+353270
+353271
+353272
+353273
+353274
+353275
+353276
+353277
+353278
+353279
+353280
+353281
+353282
+353283
+353284
+353285
+353286
+353287
+353288
+353289
+353290
+353291
+353292
+353293
+353294
+353295
+353296
+353297
+353298
+353299
+353300
+353301
+353302
+353303
+353304
+353305
+353306
+353307
+353308
+353309
+353310
+353311
+353312
+353313
+353314
+353315
+353316
+353317
+353318
+353319
+353320
+353321
+353322
+353323
+353324
+353325
+353326
+353327
+353328
+353329
+353330
+353331
+353332
+353333
+353334
+353335
+353336
+353337
+353338
+353339
+353340
+353341
+353342
+353343
+353344
+353345
+353346
+353347
+353348
+353349
+353350
+353351
+353352
+353353
+353354
+353355
+353356
+353357
+353358
+353359
+353360
+353361
+353362
+353363
+353364
+353365
+353366
+353367
+353368
+353369
+353370
+353371
+353372
+353373
+353374
+353375
+353376
+353377
+353378
+353379
+353380
+353381
+353382
+353383
+353384
+353385
+353386
+353387
+353388
+353389
+353390
+353391
+353392
+353393
+353394
+353395
+353396
+353397
+353398
+353399
+353400
+353401
+353402
+353403
+353404
+353405
+353406
+353407
+353408
+353409
+353410
+353411
+353412
+353413
+353414
+353415
+353416
+353417
+353418
+353419
+353420
+353421
+353422
+353423
+353424
+353425
+353426
+353427
+353428
+353429
+353430
+353431
+353432
+353433
+353434
+353435
+353436
+353437
+353438
+353439
+353440
+353441
+353442
+353443
+353444
+353445
+353446
+353447
+353448
+353449
+353450
+353451
+353452
+353453
+353454
+353455
+353456
+353457
+353458
+353459
+353460
+353461
+353462
+353463
+353464
+353465
+353466
+353467
+353468
+353469
+353470
+353471
+353472
+353473
+353474
+353475
+353476
+353477
+353478
+353479
+353480
+353481
+353482
+353483
+353484
+353485
+353486
+353487
+353488
+353489
+353490
+353491
+353492
+353493
+353494
+353495
+353496
+353497
+353498
+353499
+353500
+353501
+353502
+353503
+353504
+353505
+353506
+353507
+353508
+353509
+353510
+353511
+353512
+353513
+353514
+353515
+353516
+353517
+353518
+353519
+353520
+353521
+353522
+353523
+353524
+353525
+353526
+353527
+353528
+353529
+353530
+353531
+353532
+353533
+353534
+353535
+353536
+353537
+353538
+353539
+353540
+353541
+353542
+353543
+353544
+353545
+353546
+353547
+353548
+353549
+353550
+353551
+353552
+353553
+353554
+353555
+353556
+353557
+353558
+353559
+353560
+353561
+353562
+353563
+353564
+353565
+353566
+353567
+353568
+353569
+353570
+353571
+353572
+353573
+353574
+353575
+353576
+353577
+353578
+353579
+353580
+353581
+353582
+353583
+353584
+353585
+353586
+353587
+353588
+353589
+353590
+353591
+353592
+353593
+353594
+353595
+353596
+353597
+353598
+353599
+353600
+353601
+353602
+353603
+353604
+353605
+353606
+353607
+353608
+353609
+353610
+353611
+353612
+353613
+353614
+353615
+353616
+353617
+353618
+353619
+353620
+353621
+353622
+353623
+353624
+353625
+353626
+353627
+353628
+353629
+353630
+353631
+353632
+353633
+353634
+353635
+353636
+353637
+353638
+353639
+353640
+353641
+353642
+353643
+353644
+353645
+353646
+353647
+353648
+353649
+353650
+353651
+353652
+353653
+353654
+353655
+353656
+353657
+353658
+353659
+353660
+353661
+353662
+353663
+353664
+353665
+353666
+353667
+353668
+353669
+353670
+353671
+353672
+353673
+353674
+353675
+353676
+353677
+353678
+353679
+353680
+353681
+353682
+353683
+353684
+353685
+353686
+353687
+353688
+353689
+353690
+353691
+353692
+353693
+353694
+353695
+353696
+353697
+353698
+353699
+353700
+353701
+353702
+353703
+353704
+353705
+353706
+353707
+353708
+353709
+353710
+353711
+353712
+353713
+353714
+353715
+353716
+353717
+353718
+353719
+353720
+353721
+353722
+353723
+353724
+353725
+353726
+353727
+353728
+353729
+353730
+353731
+353732
+353733
+353734
+353735
+353736
+353737
+353738
+353739
+353740
+353741
+353742
+353743
+353744
+353745
+353746
+353747
+353748
+353749
+353750
+353751
+353752
+353753
+353754
+353755
+353756
+353757
+353758
+353759
+353760
+353761
+353762
+353763
+353764
+353765
+353766
+353767
+353768
+353769
+353770
+353771
+353772
+353773
+353774
+353775
+353776
+353777
+353778
+353779
+353780
+353781
+353782
+353783
+353784
+353785
+353786
+353787
+353788
+353789
+353790
+353791
+353792
+353793
+353794
+353795
+353796
+353797
+353798
+353799
+353800
+353801
+353802
+353803
+353804
+353805
+353806
+353807
+353808
+353809
+353810
+353811
+353812
+353813
+353814
+353815
+353816
+353817
+353818
+353819
+353820
+353821
+353822
+353823
+353824
+353825
+353826
+353827
+353828
+353829
+353830
+353831
+353832
+353833
+353834
+353835
+353836
+353837
+353838
+353839
+353840
+353841
+353842
+353843
+353844
+353845
+353846
+353847
+353848
+353849
+353850
+353851
+353852
+353853
+353854
+353855
+353856
+353857
+353858
+353859
+353860
+353861
+353862
+353863
+353864
+353865
+353866
+353867
+353868
+353869
+353870
+353871
+353872
+353873
+353874
+353875
+353876
+353877
+353878
+353879
+353880
+353881
+353882
+353883
+353884
+353885
+353886
+353887
+353888
+353889
+353890
+353891
+353892
+353893
+353894
+353895
+353896
+353897
+353898
+353899
+353900
+353901
+353902
+353903
+353904
+353905
+353906
+353907
+353908
+353909
+353910
+353911
+353912
+353913
+353914
+353915
+353916
+353917
+353918
+353919
+353920
+353921
+353922
+353923
+353924
+353925
+353926
+353927
+353928
+353929
+353930
+353931
+353932
+353933
+353934
+353935
+353936
+353937
+353938
+353939
+353940
+353941
+353942
+353943
+353944
+353945
+353946
+353947
+353948
+353949
+353950
+353951
+353952
+353953
+353954
+353955
+353956
+353957
+353958
+353959
+353960
+353961
+353962
+353963
+353964
+353965
+353966
+353967
+353968
+353969
+353970
+353971
+353972
+353973
+353974
+353975
+353976
+353977
+353978
+353979
+353980
+353981
+353982
+353983
+353984
+353985
+353986
+353987
+353988
+353989
+353990
+353991
+353992
+353993
+353994
+353995
+353996
+353997
+353998
+353999
+354000
+354001
+354002
+354003
+354004
+354005
+354006
+354007
+354008
+354009
+354010
+354011
+354012
+354013
+354014
+354015
+354016
+354017
+354018
+354019
+354020
+354021
+354022
+354023
+354024
+354025
+354026
+354027
+354028
+354029
+354030
+354031
+354032
+354033
+354034
+354035
+354036
+354037
+354038
+354039
+354040
+354041
+354042
+354043
+354044
+354045
+354046
+354047
+354048
+354049
+354050
+354051
+354052
+354053
+354054
+354055
+354056
+354057
+354058
+354059
+354060
+354061
+354062
+354063
+354064
+354065
+354066
+354067
+354068
+354069
+354070
+354071
+354072
+354073
+354074
+354075
+354076
+354077
+354078
+354079
+354080
+354081
+354082
+354083
+354084
+354085
+354086
+354087
+354088
+354089
+354090
+354091
+354092
+354093
+354094
+354095
+354096
+354097
+354098
+354099
+354100
+354101
+354102
+354103
+354104
+354105
+354106
+354107
+354108
+354109
+354110
+354111
+354112
+354113
+354114
+354115
+354116
+354117
+354118
+354119
+354120
+354121
+354122
+354123
+354124
+354125
+354126
+354127
+354128
+354129
+354130
+354131
+354132
+354133
+354134
+354135
+354136
+354137
+354138
+354139
+354140
+354141
+354142
+354143
+354144
+354145
+354146
+354147
+354148
+354149
+354150
+354151
+354152
+354153
+354154
+354155
+354156
+354157
+354158
+354159
+354160
+354161
+354162
+354163
+354164
+354165
+354166
+354167
+354168
+354169
+354170
+354171
+354172
+354173
+354174
+354175
+354176
+354177
+354178
+354179
+354180
+354181
+354182
+354183
+354184
+354185
+354186
+354187
+354188
+354189
+354190
+354191
+354192
+354193
+354194
+354195
+354196
+354197
+354198
+354199
+354200
+354201
+354202
+354203
+354204
+354205
+354206
+354207
+354208
+354209
+354210
+354211
+354212
+354213
+354214
+354215
+354216
+354217
+354218
+354219
+354220
+354221
+354222
+354223
+354224
+354225
+354226
+354227
+354228
+354229
+354230
+354231
+354232
+354233
+354234
+354235
+354236
+354237
+354238
+354239
+354240
+354241
+354242
+354243
+354244
+354245
+354246
+354247
+354248
+354249
+354250
+354251
+354252
+354253
+354254
+354255
+354256
+354257
+354258
+354259
+354260
+354261
+354262
+354263
+354264
+354265
+354266
+354267
+354268
+354269
+354270
+354271
+354272
+354273
+354274
+354275
+354276
+354277
+354278
+354279
+354280
+354281
+354282
+354283
+354284
+354285
+354286
+354287
+354288
+354289
+354290
+354291
+354292
+354293
+354294
+354295
+354296
+354297
+354298
+354299
+354300
+354301
+354302
+354303
+354304
+354305
+354306
+354307
+354308
+354309
+354310
+354311
+354312
+354313
+354314
+354315
+354316
+354317
+354318
+354319
+354320
+354321
+354322
+354323
+354324
+354325
+354326
+354327
+354328
+354329
+354330
+354331
+354332
+354333
+354334
+354335
+354336
+354337
+354338
+354339
+354340
+354341
+354342
+354343
+354344
+354345
+354346
+354347
+354348
+354349
+354350
+354351
+354352
+354353
+354354
+354355
+354356
+354357
+354358
+354359
+354360
+354361
+354362
+354363
+354364
+354365
+354366
+354367
+354368
+354369
+354370
+354371
+354372
+354373
+354374
+354375
+354376
+354377
+354378
+354379
+354380
+354381
+354382
+354383
+354384
+354385
+354386
+354387
+354388
+354389
+354390
+354391
+354392
+354393
+354394
+354395
+354396
+354397
+354398
+354399
+354400
+354401
+354402
+354403
+354404
+354405
+354406
+354407
+354408
+354409
+354410
+354411
+354412
+354413
+354414
+354415
+354416
+354417
+354418
+354419
+354420
+354421
+354422
+354423
+354424
+354425
+354426
+354427
+354428
+354429
+354430
+354431
+354432
+354433
+354434
+354435
+354436
+354437
+354438
+354439
+354440
+354441
+354442
+354443
+354444
+354445
+354446
+354447
+354448
+354449
+354450
+354451
+354452
+354453
+354454
+354455
+354456
+354457
+354458
+354459
+354460
+354461
+354462
+354463
+354464
+354465
+354466
+354467
+354468
+354469
+354470
+354471
+354472
+354473
+354474
+354475
+354476
+354477
+354478
+354479
+354480
+354481
+354482
+354483
+354484
+354485
+354486
+354487
+354488
+354489
+354490
+354491
+354492
+354493
+354494
+354495
+354496
+354497
+354498
+354499
+354500
+354501
+354502
+354503
+354504
+354505
+354506
+354507
+354508
+354509
+354510
+354511
+354512
+354513
+354514
+354515
+354516
+354517
+354518
+354519
+354520
+354521
+354522
+354523
+354524
+354525
+354526
+354527
+354528
+354529
+354530
+354531
+354532
+354533
+354534
+354535
+354536
+354537
+354538
+354539
+354540
+354541
+354542
+354543
+354544
+354545
+354546
+354547
+354548
+354549
+354550
+354551
+354552
+354553
+354554
+354555
+354556
+354557
+354558
+354559
+354560
+354561
+354562
+354563
+354564
+354565
+354566
+354567
+354568
+354569
+354570
+354571
+354572
+354573
+354574
+354575
+354576
+354577
+354578
+354579
+354580
+354581
+354582
+354583
+354584
+354585
+354586
+354587
+354588
+354589
+354590
+354591
+354592
+354593
+354594
+354595
+354596
+354597
+354598
+354599
+354600
+354601
+354602
+354603
+354604
+354605
+354606
+354607
+354608
+354609
+354610
+354611
+354612
+354613
+354614
+354615
+354616
+354617
+354618
+354619
+354620
+354621
+354622
+354623
+354624
+354625
+354626
+354627
+354628
+354629
+354630
+354631
+354632
+354633
+354634
+354635
+354636
+354637
+354638
+354639
+354640
+354641
+354642
+354643
+354644
+354645
+354646
+354647
+354648
+354649
+354650
+354651
+354652
+354653
+354654
+354655
+354656
+354657
+354658
+354659
+354660
+354661
+354662
+354663
+354664
+354665
+354666
+354667
+354668
+354669
+354670
+354671
+354672
+354673
+354674
+354675
+354676
+354677
+354678
+354679
+354680
+354681
+354682
+354683
+354684
+354685
+354686
+354687
+354688
+354689
+354690
+354691
+354692
+354693
+354694
+354695
+354696
+354697
+354698
+354699
+354700
+354701
+354702
+354703
+354704
+354705
+354706
+354707
+354708
+354709
+354710
+354711
+354712
+354713
+354714
+354715
+354716
+354717
+354718
+354719
+354720
+354721
+354722
+354723
+354724
+354725
+354726
+354727
+354728
+354729
+354730
+354731
+354732
+354733
+354734
+354735
+354736
+354737
+354738
+354739
+354740
+354741
+354742
+354743
+354744
+354745
+354746
+354747
+354748
+354749
+354750
+354751
+354752
+354753
+354754
+354755
+354756
+354757
+354758
+354759
+354760
+354761
+354762
+354763
+354764
+354765
+354766
+354767
+354768
+354769
+354770
+354771
+354772
+354773
+354774
+354775
+354776
+354777
+354778
+354779
+354780
+354781
+354782
+354783
+354784
+354785
+354786
+354787
+354788
+354789
+354790
+354791
+354792
+354793
+354794
+354795
+354796
+354797
+354798
+354799
+354800
+354801
+354802
+354803
+354804
+354805
+354806
+354807
+354808
+354809
+354810
+354811
+354812
+354813
+354814
+354815
+354816
+354817
+354818
+354819
+354820
+354821
+354822
+354823
+354824
+354825
+354826
+354827
+354828
+354829
+354830
+354831
+354832
+354833
+354834
+354835
+354836
+354837
+354838
+354839
+354840
+354841
+354842
+354843
+354844
+354845
+354846
+354847
+354848
+354849
+354850
+354851
+354852
+354853
+354854
+354855
+354856
+354857
+354858
+354859
+354860
+354861
+354862
+354863
+354864
+354865
+354866
+354867
+354868
+354869
+354870
+354871
+354872
+354873
+354874
+354875
+354876
+354877
+354878
+354879
+354880
+354881
+354882
+354883
+354884
+354885
+354886
+354887
+354888
+354889
+354890
+354891
+354892
+354893
+354894
+354895
+354896
+354897
+354898
+354899
+354900
+354901
+354902
+354903
+354904
+354905
+354906
+354907
+354908
+354909
+354910
+354911
+354912
+354913
+354914
+354915
+354916
+354917
+354918
+354919
+354920
+354921
+354922
+354923
+354924
+354925
+354926
+354927
+354928
+354929
+354930
+354931
+354932
+354933
+354934
+354935
+354936
+354937
+354938
+354939
+354940
+354941
+354942
+354943
+354944
+354945
+354946
+354947
+354948
+354949
+354950
+354951
+354952
+354953
+354954
+354955
+354956
+354957
+354958
+354959
+354960
+354961
+354962
+354963
+354964
+354965
+354966
+354967
+354968
+354969
+354970
+354971
+354972
+354973
+354974
+354975
+354976
+354977
+354978
+354979
+354980
+354981
+354982
+354983
+354984
+354985
+354986
+354987
+354988
+354989
+354990
+354991
+354992
+354993
+354994
+354995
+354996
+354997
+354998
+354999
+355000
+355001
+355002
+355003
+355004
+355005
+355006
+355007
+355008
+355009
+355010
+355011
+355012
+355013
+355014
+355015
+355016
+355017
+355018
+355019
+355020
+355021
+355022
+355023
+355024
+355025
+355026
+355027
+355028
+355029
+355030
+355031
+355032
+355033
+355034
+355035
+355036
+355037
+355038
+355039
+355040
+355041
+355042
+355043
+355044
+355045
+355046
+355047
+355048
+355049
+355050
+355051
+355052
+355053
+355054
+355055
+355056
+355057
+355058
+355059
+355060
+355061
+355062
+355063
+355064
+355065
+355066
+355067
+355068
+355069
+355070
+355071
+355072
+355073
+355074
+355075
+355076
+355077
+355078
+355079
+355080
+355081
+355082
+355083
+355084
+355085
+355086
+355087
+355088
+355089
+355090
+355091
+355092
+355093
+355094
+355095
+355096
+355097
+355098
+355099
+355100
+355101
+355102
+355103
+355104
+355105
+355106
+355107
+355108
+355109
+355110
+355111
+355112
+355113
+355114
+355115
+355116
+355117
+355118
+355119
+355120
+355121
+355122
+355123
+355124
+355125
+355126
+355127
+355128
+355129
+355130
+355131
+355132
+355133
+355134
+355135
+355136
+355137
+355138
+355139
+355140
+355141
+355142
+355143
+355144
+355145
+355146
+355147
+355148
+355149
+355150
+355151
+355152
+355153
+355154
+355155
+355156
+355157
+355158
+355159
+355160
+355161
+355162
+355163
+355164
+355165
+355166
+355167
+355168
+355169
+355170
+355171
+355172
+355173
+355174
+355175
+355176
+355177
+355178
+355179
+355180
+355181
+355182
+355183
+355184
+355185
+355186
+355187
+355188
+355189
+355190
+355191
+355192
+355193
+355194
+355195
+355196
+355197
+355198
+355199
+355200
+355201
+355202
+355203
+355204
+355205
+355206
+355207
+355208
+355209
+355210
+355211
+355212
+355213
+355214
+355215
+355216
+355217
+355218
+355219
+355220
+355221
+355222
+355223
+355224
+355225
+355226
+355227
+355228
+355229
+355230
+355231
+355232
+355233
+355234
+355235
+355236
+355237
+355238
+355239
+355240
+355241
+355242
+355243
+355244
+355245
+355246
+355247
+355248
+355249
+355250
+355251
+355252
+355253
+355254
+355255
+355256
+355257
+355258
+355259
+355260
+355261
+355262
+355263
+355264
+355265
+355266
+355267
+355268
+355269
+355270
+355271
+355272
+355273
+355274
+355275
+355276
+355277
+355278
+355279
+355280
+355281
+355282
+355283
+355284
+355285
+355286
+355287
+355288
+355289
+355290
+355291
+355292
+355293
+355294
+355295
+355296
+355297
+355298
+355299
+355300
+355301
+355302
+355303
+355304
+355305
+355306
+355307
+355308
+355309
+355310
+355311
+355312
+355313
+355314
+355315
+355316
+355317
+355318
+355319
+355320
+355321
+355322
+355323
+355324
+355325
+355326
+355327
+355328
+355329
+355330
+355331
+355332
+355333
+355334
+355335
+355336
+355337
+355338
+355339
+355340
+355341
+355342
+355343
+355344
+355345
+355346
+355347
+355348
+355349
+355350
+355351
+355352
+355353
+355354
+355355
+355356
+355357
+355358
+355359
+355360
+355361
+355362
+355363
+355364
+355365
+355366
+355367
+355368
+355369
+355370
+355371
+355372
+355373
+355374
+355375
+355376
+355377
+355378
+355379
+355380
+355381
+355382
+355383
+355384
+355385
+355386
+355387
+355388
+355389
+355390
+355391
+355392
+355393
+355394
+355395
+355396
+355397
+355398
+355399
+355400
+355401
+355402
+355403
+355404
+355405
+355406
+355407
+355408
+355409
+355410
+355411
+355412
+355413
+355414
+355415
+355416
+355417
+355418
+355419
+355420
+355421
+355422
+355423
+355424
+355425
+355426
+355427
+355428
+355429
+355430
+355431
+355432
+355433
+355434
+355435
+355436
+355437
+355438
+355439
+355440
+355441
+355442
+355443
+355444
+355445
+355446
+355447
+355448
+355449
+355450
+355451
+355452
+355453
+355454
+355455
+355456
+355457
+355458
+355459
+355460
+355461
+355462
+355463
+355464
+355465
+355466
+355467
+355468
+355469
+355470
+355471
+355472
+355473
+355474
+355475
+355476
+355477
+355478
+355479
+355480
+355481
+355482
+355483
+355484
+355485
+355486
+355487
+355488
+355489
+355490
+355491
+355492
+355493
+355494
+355495
+355496
+355497
+355498
+355499
+355500
+355501
+355502
+355503
+355504
+355505
+355506
+355507
+355508
+355509
+355510
+355511
+355512
+355513
+355514
+355515
+355516
+355517
+355518
+355519
+355520
+355521
+355522
+355523
+355524
+355525
+355526
+355527
+355528
+355529
+355530
+355531
+355532
+355533
+355534
+355535
+355536
+355537
+355538
+355539
+355540
+355541
+355542
+355543
+355544
+355545
+355546
+355547
+355548
+355549
+355550
+355551
+355552
+355553
+355554
+355555
+355556
+355557
+355558
+355559
+355560
+355561
+355562
+355563
+355564
+355565
+355566
+355567
+355568
+355569
+355570
+355571
+355572
+355573
+355574
+355575
+355576
+355577
+355578
+355579
+355580
+355581
+355582
+355583
+355584
+355585
+355586
+355587
+355588
+355589
+355590
+355591
+355592
+355593
+355594
+355595
+355596
+355597
+355598
+355599
+355600
+355601
+355602
+355603
+355604
+355605
+355606
+355607
+355608
+355609
+355610
+355611
+355612
+355613
+355614
+355615
+355616
+355617
+355618
+355619
+355620
+355621
+355622
+355623
+355624
+355625
+355626
+355627
+355628
+355629
+355630
+355631
+355632
+355633
+355634
+355635
+355636
+355637
+355638
+355639
+355640
+355641
+355642
+355643
+355644
+355645
+355646
+355647
+355648
+355649
+355650
+355651
+355652
+355653
+355654
+355655
+355656
+355657
+355658
+355659
+355660
+355661
+355662
+355663
+355664
+355665
+355666
+355667
+355668
+355669
+355670
+355671
+355672
+355673
+355674
+355675
+355676
+355677
+355678
+355679
+355680
+355681
+355682
+355683
+355684
+355685
+355686
+355687
+355688
+355689
+355690
+355691
+355692
+355693
+355694
+355695
+355696
+355697
+355698
+355699
+355700
+355701
+355702
+355703
+355704
+355705
+355706
+355707
+355708
+355709
+355710
+355711
+355712
+355713
+355714
+355715
+355716
+355717
+355718
+355719
+355720
+355721
+355722
+355723
+355724
+355725
+355726
+355727
+355728
+355729
+355730
+355731
+355732
+355733
+355734
+355735
+355736
+355737
+355738
+355739
+355740
+355741
+355742
+355743
+355744
+355745
+355746
+355747
+355748
+355749
+355750
+355751
+355752
+355753
+355754
+355755
+355756
+355757
+355758
+355759
+355760
+355761
+355762
+355763
+355764
+355765
+355766
+355767
+355768
+355769
+355770
+355771
+355772
+355773
+355774
+355775
+355776
+355777
+355778
+355779
+355780
+355781
+355782
+355783
+355784
+355785
+355786
+355787
+355788
+355789
+355790
+355791
+355792
+355793
+355794
+355795
+355796
+355797
+355798
+355799
+355800
+355801
+355802
+355803
+355804
+355805
+355806
+355807
+355808
+355809
+355810
+355811
+355812
+355813
+355814
+355815
+355816
+355817
+355818
+355819
+355820
+355821
+355822
+355823
+355824
+355825
+355826
+355827
+355828
+355829
+355830
+355831
+355832
+355833
+355834
+355835
+355836
+355837
+355838
+355839
+355840
+355841
+355842
+355843
+355844
+355845
+355846
+355847
+355848
+355849
+355850
+355851
+355852
+355853
+355854
+355855
+355856
+355857
+355858
+355859
+355860
+355861
+355862
+355863
+355864
+355865
+355866
+355867
+355868
+355869
+355870
+355871
+355872
+355873
+355874
+355875
+355876
+355877
+355878
+355879
+355880
+355881
+355882
+355883
+355884
+355885
+355886
+355887
+355888
+355889
+355890
+355891
+355892
+355893
+355894
+355895
+355896
+355897
+355898
+355899
+355900
+355901
+355902
+355903
+355904
+355905
+355906
+355907
+355908
+355909
+355910
+355911
+355912
+355913
+355914
+355915
+355916
+355917
+355918
+355919
+355920
+355921
+355922
+355923
+355924
+355925
+355926
+355927
+355928
+355929
+355930
+355931
+355932
+355933
+355934
+355935
+355936
+355937
+355938
+355939
+355940
+355941
+355942
+355943
+355944
+355945
+355946
+355947
+355948
+355949
+355950
+355951
+355952
+355953
+355954
+355955
+355956
+355957
+355958
+355959
+355960
+355961
+355962
+355963
+355964
+355965
+355966
+355967
+355968
+355969
+355970
+355971
+355972
+355973
+355974
+355975
+355976
+355977
+355978
+355979
+355980
+355981
+355982
+355983
+355984
+355985
+355986
+355987
+355988
+355989
+355990
+355991
+355992
+355993
+355994
+355995
+355996
+355997
+355998
+355999
+356000
+356001
+356002
+356003
+356004
+356005
+356006
+356007
+356008
+356009
+356010
+356011
+356012
+356013
+356014
+356015
+356016
+356017
+356018
+356019
+356020
+356021
+356022
+356023
+356024
+356025
+356026
+356027
+356028
+356029
+356030
+356031
+356032
+356033
+356034
+356035
+356036
+356037
+356038
+356039
+356040
+356041
+356042
+356043
+356044
+356045
+356046
+356047
+356048
+356049
+356050
+356051
+356052
+356053
+356054
+356055
+356056
+356057
+356058
+356059
+356060
+356061
+356062
+356063
+356064
+356065
+356066
+356067
+356068
+356069
+356070
+356071
+356072
+356073
+356074
+356075
+356076
+356077
+356078
+356079
+356080
+356081
+356082
+356083
+356084
+356085
+356086
+356087
+356088
+356089
+356090
+356091
+356092
+356093
+356094
+356095
+356096
+356097
+356098
+356099
+356100
+356101
+356102
+356103
+356104
+356105
+356106
+356107
+356108
+356109
+356110
+356111
+356112
+356113
+356114
+356115
+356116
+356117
+356118
+356119
+356120
+356121
+356122
+356123
+356124
+356125
+356126
+356127
+356128
+356129
+356130
+356131
+356132
+356133
+356134
+356135
+356136
+356137
+356138
+356139
+356140
+356141
+356142
+356143
+356144
+356145
+356146
+356147
+356148
+356149
+356150
+356151
+356152
+356153
+356154
+356155
+356156
+356157
+356158
+356159
+356160
+356161
+356162
+356163
+356164
+356165
+356166
+356167
+356168
+356169
+356170
+356171
+356172
+356173
+356174
+356175
+356176
+356177
+356178
+356179
+356180
+356181
+356182
+356183
+356184
+356185
+356186
+356187
+356188
+356189
+356190
+356191
+356192
+356193
+356194
+356195
+356196
+356197
+356198
+356199
+356200
+356201
+356202
+356203
+356204
+356205
+356206
+356207
+356208
+356209
+356210
+356211
+356212
+356213
+356214
+356215
+356216
+356217
+356218
+356219
+356220
+356221
+356222
+356223
+356224
+356225
+356226
+356227
+356228
+356229
+356230
+356231
+356232
+356233
+356234
+356235
+356236
+356237
+356238
+356239
+356240
+356241
+356242
+356243
+356244
+356245
+356246
+356247
+356248
+356249
+356250
+356251
+356252
+356253
+356254
+356255
+356256
+356257
+356258
+356259
+356260
+356261
+356262
+356263
+356264
+356265
+356266
+356267
+356268
+356269
+356270
+356271
+356272
+356273
+356274
+356275
+356276
+356277
+356278
+356279
+356280
+356281
+356282
+356283
+356284
+356285
+356286
+356287
+356288
+356289
+356290
+356291
+356292
+356293
+356294
+356295
+356296
+356297
+356298
+356299
+356300
+356301
+356302
+356303
+356304
+356305
+356306
+356307
+356308
+356309
+356310
+356311
+356312
+356313
+356314
+356315
+356316
+356317
+356318
+356319
+356320
+356321
+356322
+356323
+356324
+356325
+356326
+356327
+356328
+356329
+356330
+356331
+356332
+356333
+356334
+356335
+356336
+356337
+356338
+356339
+356340
+356341
+356342
+356343
+356344
+356345
+356346
+356347
+356348
+356349
+356350
+356351
+356352
+356353
+356354
+356355
+356356
+356357
+356358
+356359
+356360
+356361
+356362
+356363
+356364
+356365
+356366
+356367
+356368
+356369
+356370
+356371
+356372
+356373
+356374
+356375
+356376
+356377
+356378
+356379
+356380
+356381
+356382
+356383
+356384
+356385
+356386
+356387
+356388
+356389
+356390
+356391
+356392
+356393
+356394
+356395
+356396
+356397
+356398
+356399
+356400
+356401
+356402
+356403
+356404
+356405
+356406
+356407
+356408
+356409
+356410
+356411
+356412
+356413
+356414
+356415
+356416
+356417
+356418
+356419
+356420
+356421
+356422
+356423
+356424
+356425
+356426
+356427
+356428
+356429
+356430
+356431
+356432
+356433
+356434
+356435
+356436
+356437
+356438
+356439
+356440
+356441
+356442
+356443
+356444
+356445
+356446
+356447
+356448
+356449
+356450
+356451
+356452
+356453
+356454
+356455
+356456
+356457
+356458
+356459
+356460
+356461
+356462
+356463
+356464
+356465
+356466
+356467
+356468
+356469
+356470
+356471
+356472
+356473
+356474
+356475
+356476
+356477
+356478
+356479
+356480
+356481
+356482
+356483
+356484
+356485
+356486
+356487
+356488
+356489
+356490
+356491
+356492
+356493
+356494
+356495
+356496
+356497
+356498
+356499
+356500
+356501
+356502
+356503
+356504
+356505
+356506
+356507
+356508
+356509
+356510
+356511
+356512
+356513
+356514
+356515
+356516
+356517
+356518
+356519
+356520
+356521
+356522
+356523
+356524
+356525
+356526
+356527
+356528
+356529
+356530
+356531
+356532
+356533
+356534
+356535
+356536
+356537
+356538
+356539
+356540
+356541
+356542
+356543
+356544
+356545
+356546
+356547
+356548
+356549
+356550
+356551
+356552
+356553
+356554
+356555
+356556
+356557
+356558
+356559
+356560
+356561
+356562
+356563
+356564
+356565
+356566
+356567
+356568
+356569
+356570
+356571
+356572
+356573
+356574
+356575
+356576
+356577
+356578
+356579
+356580
+356581
+356582
+356583
+356584
+356585
+356586
+356587
+356588
+356589
+356590
+356591
+356592
+356593
+356594
+356595
+356596
+356597
+356598
+356599
+356600
+356601
+356602
+356603
+356604
+356605
+356606
+356607
+356608
+356609
+356610
+356611
+356612
+356613
+356614
+356615
+356616
+356617
+356618
+356619
+356620
+356621
+356622
+356623
+356624
+356625
+356626
+356627
+356628
+356629
+356630
+356631
+356632
+356633
+356634
+356635
+356636
+356637
+356638
+356639
+356640
+356641
+356642
+356643
+356644
+356645
+356646
+356647
+356648
+356649
+356650
+356651
+356652
+356653
+356654
+356655
+356656
+356657
+356658
+356659
+356660
+356661
+356662
+356663
+356664
+356665
+356666
+356667
+356668
+356669
+356670
+356671
+356672
+356673
+356674
+356675
+356676
+356677
+356678
+356679
+356680
+356681
+356682
+356683
+356684
+356685
+356686
+356687
+356688
+356689
+356690
+356691
+356692
+356693
+356694
+356695
+356696
+356697
+356698
+356699
+356700
+356701
+356702
+356703
+356704
+356705
+356706
+356707
+356708
+356709
+356710
+356711
+356712
+356713
+356714
+356715
+356716
+356717
+356718
+356719
+356720
+356721
+356722
+356723
+356724
+356725
+356726
+356727
+356728
+356729
+356730
+356731
+356732
+356733
+356734
+356735
+356736
+356737
+356738
+356739
+356740
+356741
+356742
+356743
+356744
+356745
+356746
+356747
+356748
+356749
+356750
+356751
+356752
+356753
+356754
+356755
+356756
+356757
+356758
+356759
+356760
+356761
+356762
+356763
+356764
+356765
+356766
+356767
+356768
+356769
+356770
+356771
+356772
+356773
+356774
+356775
+356776
+356777
+356778
+356779
+356780
+356781
+356782
+356783
+356784
+356785
+356786
+356787
+356788
+356789
+356790
+356791
+356792
+356793
+356794
+356795
+356796
+356797
+356798
+356799
+356800
+356801
+356802
+356803
+356804
+356805
+356806
+356807
+356808
+356809
+356810
+356811
+356812
+356813
+356814
+356815
+356816
+356817
+356818
+356819
+356820
+356821
+356822
+356823
+356824
+356825
+356826
+356827
+356828
+356829
+356830
+356831
+356832
+356833
+356834
+356835
+356836
+356837
+356838
+356839
+356840
+356841
+356842
+356843
+356844
+356845
+356846
+356847
+356848
+356849
+356850
+356851
+356852
+356853
+356854
+356855
+356856
+356857
+356858
+356859
+356860
+356861
+356862
+356863
+356864
+356865
+356866
+356867
+356868
+356869
+356870
+356871
+356872
+356873
+356874
+356875
+356876
+356877
+356878
+356879
+356880
+356881
+356882
+356883
+356884
+356885
+356886
+356887
+356888
+356889
+356890
+356891
+356892
+356893
+356894
+356895
+356896
+356897
+356898
+356899
+356900
+356901
+356902
+356903
+356904
+356905
+356906
+356907
+356908
+356909
+356910
+356911
+356912
+356913
+356914
+356915
+356916
+356917
+356918
+356919
+356920
+356921
+356922
+356923
+356924
+356925
+356926
+356927
+356928
+356929
+356930
+356931
+356932
+356933
+356934
+356935
+356936
+356937
+356938
+356939
+356940
+356941
+356942
+356943
+356944
+356945
+356946
+356947
+356948
+356949
+356950
+356951
+356952
+356953
+356954
+356955
+356956
+356957
+356958
+356959
+356960
+356961
+356962
+356963
+356964
+356965
+356966
+356967
+356968
+356969
+356970
+356971
+356972
+356973
+356974
+356975
+356976
+356977
+356978
+356979
+356980
+356981
+356982
+356983
+356984
+356985
+356986
+356987
+356988
+356989
+356990
+356991
+356992
+356993
+356994
+356995
+356996
+356997
+356998
+356999
+357000
+357001
+357002
+357003
+357004
+357005
+357006
+357007
+357008
+357009
+357010
+357011
+357012
+357013
+357014
+357015
+357016
+357017
+357018
+357019
+357020
+357021
+357022
+357023
+357024
+357025
+357026
+357027
+357028
+357029
+357030
+357031
+357032
+357033
+357034
+357035
+357036
+357037
+357038
+357039
+357040
+357041
+357042
+357043
+357044
+357045
+357046
+357047
+357048
+357049
+357050
+357051
+357052
+357053
+357054
+357055
+357056
+357057
+357058
+357059
+357060
+357061
+357062
+357063
+357064
+357065
+357066
+357067
+357068
+357069
+357070
+357071
+357072
+357073
+357074
+357075
+357076
+357077
+357078
+357079
+357080
+357081
+357082
+357083
+357084
+357085
+357086
+357087
+357088
+357089
+357090
+357091
+357092
+357093
+357094
+357095
+357096
+357097
+357098
+357099
+357100
+357101
+357102
+357103
+357104
+357105
+357106
+357107
+357108
+357109
+357110
+357111
+357112
+357113
+357114
+357115
+357116
+357117
+357118
+357119
+357120
+357121
+357122
+357123
+357124
+357125
+357126
+357127
+357128
+357129
+357130
+357131
+357132
+357133
+357134
+357135
+357136
+357137
+357138
+357139
+357140
+357141
+357142
+357143
+357144
+357145
+357146
+357147
 
// auto-generated: "lalrpop 0.20.2"
-// sha3: 257f936695a2392408434ceb318165aab8653874720b36c6a5476ba6f3f38f3c
+// sha3: 749abb8c2338ad0756dca7cb9dae2e3dbe73c5a025047bfaaa8445d875490a71
 use crate::tokens::Token;
 use crate::lexer::LexicalError;
 use edlang_ast as ast;
@@ -335946,24 +357224,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -335971,9 +357247,9 @@
         // State 1
         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, 39, 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, -170, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, -167, 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,
         // State 3
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 5, 0, -169, 0, 0, 0, -169, -169, -169, -169, -169, -169, 6, -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, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 5, 0, -166, 0, 0, 0, -166, -166, -166, -166, -166, -166, 6, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 4
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 5
@@ -335989,7 +357265,7 @@
         // State 10
         0, 0, 0, 76, 0, 0, -110, 0, 77, -110, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 79, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, -110, 0,
         // State 11
-        0, -170, -170, -170, -170, 22, -170, -170, -170, -170, -170, 0, 5, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, 6, -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, -167, -167, -167, -167, 22, -167, -167, -167, -167, -167, 0, 5, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, 6, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 12
         53, 0, 0, 14, 0, 23, 0, 16, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 39, 0, 0, 56, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 58,
         // State 13
@@ -335999,7 +357275,7 @@
         // State 15
         53, 0, 0, 14, 0, 23, 0, 16, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 39, 0, 0, 56, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 58,
         // State 16
-        0, -170, -170, -170, -170, 22, -170, -170, -170, -170, -170, 0, 5, 0, -170, 0, 86, 0, -170, -170, 0, -170, -170, -170, 6, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        0, -167, -167, -167, -167, 22, -167, -167, -167, -167, -167, 0, 5, 0, -167, 0, 86, 0, -167, -167, 0, -167, -167, -167, 6, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 17
         0, 0, 0, 90, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 18
@@ -336049,11 +357325,11 @@
         // State 40
         0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 41
-        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, -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,
+        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, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, 0,
         // State 42
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, 0, -174, 0, 0, 0, -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, 0,
-        // State 43
         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, -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 43
+        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, -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 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, 64, 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,
         // State 45
@@ -336061,27 +357337,27 @@
         // State 46
         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, -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 47
-        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, -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,
+        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, -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, -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, -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,
+        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, -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
         0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
         // State 50
-        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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, -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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
         // State 51
-        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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        0, -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, -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 52
-        -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, 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
         -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, 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 53
+        -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, 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,
         // State 54
-        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, -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 55
         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, -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 55
+        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, -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,
         // State 56
-        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, -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,
+        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, -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 57
-        -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, 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,
+        -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, 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 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, 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,
         // State 59
@@ -336093,7 +357369,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 63
-        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, -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,
+        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, -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 64
         -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
         // State 65
@@ -336139,13 +357415,13 @@
         // State 85
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 86
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, -200, 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, -200, 0,
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, -199, 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, -199, 0,
         // State 87
         0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 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, -108, 0,
         // State 88
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 89
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 103, 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, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 91
@@ -336157,7 +357433,7 @@
         // State 94
         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, -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 95
-        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, -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, -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, -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,
         // State 96
         0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 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, -109, 0,
         // State 97
@@ -336167,15 +357443,15 @@
         // State 99
         0, 0, 0, 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, -95, 0,
         // State 100
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, -200, 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, -200, 0,
         // State 101
-        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, 0, -213, 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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 102
-        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, 0, -207, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 103
-        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, 0, -208, 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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 104
-        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, 0, -209, 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, 0, -208, 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, -81, 0, 0, 115, 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,
         // State 106
@@ -336189,7 +357465,7 @@
         // State 110
         0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 111
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, -188, 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, -188, 0,
         // State 112
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
         // State 113
@@ -336205,17 +357481,17 @@
         // State 118
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
         // State 119
-        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, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 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, -189, 0,
         // State 120
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
         // State 121
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
         // State 122
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
         // State 123
         0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 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, -203, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 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, -203, 0,
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -336228,7 +357504,7 @@
         // State 2
         0,
         // State 3
-        -169,
+        -166,
         // State 4
         0,
         // State 5
@@ -336244,7 +357520,7 @@
         // State 10
         -110,
         // State 11
-        -170,
+        -167,
         // State 12
         0,
         // State 13
@@ -336254,7 +357530,7 @@
         // State 15
         0,
         // State 16
-        -170,
+        -167,
         // State 17
         0,
         // State 18
@@ -336292,7 +357568,7 @@
         // State 34
         0,
         // State 35
-        -222,
+        -221,
         // State 36
         0,
         // State 37
@@ -336304,11 +357580,11 @@
         // State 40
         0,
         // State 41
-        -173,
+        -170,
         // State 42
-        -174,
-        // State 43
         -171,
+        // State 43
+        -168,
         // State 44
         0,
         // State 45
@@ -336316,25 +357592,25 @@
         // State 46
         -118,
         // State 47
-        -199,
+        -196,
         // State 48
-        -220,
+        -219,
         // State 49
         -111,
         // State 50
-        -197,
+        -194,
         // State 51
-        -198,
+        -195,
         // State 52
         0,
         // State 53
         0,
         // State 54
-        -218,
-        // State 55
         -217,
+        // State 55
+        -216,
         // State 56
-        -219,
+        -218,
         // State 57
         0,
         // State 58
@@ -336348,7 +357624,7 @@
         // State 62
         -61,
         // State 63
-        -172,
+        -169,
         // State 64
         0,
         // State 65
@@ -336394,7 +357670,7 @@
         // State 85
         0,
         // State 86
-        -200,
+        -199,
         // State 87
         -108,
         // State 88
@@ -336412,7 +357688,7 @@
         // State 94
         -112,
         // State 95
-        -196,
+        -193,
         // State 96
         -109,
         // State 97
@@ -336422,7 +357698,7 @@
         // State 99
         0,
         // State 100
-        -201,
+        -200,
         // State 101
         0,
         // State 102
@@ -336444,7 +357720,7 @@
         // State 110
         0,
         // State 111
-        -191,
+        -188,
         // State 112
         0,
         // State 113
@@ -336464,13 +357740,13 @@
         // State 120
         0,
         // State 121
-        -202,
+        -201,
         // State 122
         0,
         // State 123
         0,
         // State 124
-        -203,
+        -202,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
@@ -336527,40 +357803,40 @@
                 _ => 11,
             },
             62 => 59,
-            74 => match state {
+            72 => match state {
                 0 => 36,
                 1 => 39,
                 _ => 48,
             },
-            75 => match state {
+            73 => match state {
                 3 => 42,
                 _ => 41,
             },
-            76 => 3,
-            83 => match state {
+            74 => 3,
+            81 => match state {
                 7 => 62,
                 14 => 83,
                 33 => 120,
                 _ => 60,
             },
-            84 => match state {
+            82 => match state {
                 30 => 110,
                 _ => 99,
             },
-            86 => 49,
-            87 => 50,
-            88 => match state {
+            84 => 49,
+            85 => 50,
+            87 => match state {
                 17 => 87,
                 32 => 115,
                 _ => 109,
             },
-            90 => match state {
+            89 => match state {
                 25 => 101,
                 _ => 88,
             },
-            92 => 25,
-            93 => 12,
-            94 => 51,
+            91 => 25,
+            92 => 12,
+            93 => 51,
             _ => 0,
         }
     }
@@ -336630,25 +357906,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -336674,7 +357952,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -336698,7 +357976,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -336706,7 +357984,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -336730,22 +358008,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -336806,10 +358086,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -336830,10 +358111,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -337810,25 +359092,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -337840,14 +359122,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -337859,19 +359141,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -337883,109 +359165,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -337997,31 +359279,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -338032,68 +359314,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -338104,26 +359386,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -338135,34 +359417,34 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
-            220 => {
+            220 => __state_machine::SimulatedReduce::Accept,
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 95,
+                    states_to_pop: 1,
+                    nonterminal_produced: 96,
                 }
             }
-            221 => __state_machine::SimulatedReduce::Accept,
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -338391,12 +359673,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -338414,10 +359690,12 @@
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::AssignStmt, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -338425,18 +359703,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -338450,7 +359730,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -338464,802 +359744,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::AssignStmt,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            221 => {
                 // __AssignStmt = AssignStmt => ActionFn(11);
                 let __sym0 = __pop_Variant26(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action11::<>(__sym0);
+                let __nt = super::__action11::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            221 => {
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -339354,16 +360633,6 @@
             _ => __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)>
@@ -339374,13 +360643,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -339464,16 +360733,6 @@
             _ => __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)>
@@ -339494,13 +360753,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -339644,63 +360903,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -339714,13 +360973,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -339734,43 +360993,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -339784,13 +361043,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -339824,13 +361083,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -339884,13 +361143,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -339925,1281 +361184,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -341208,59 +362629,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -341269,59 +362698,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -341330,216 +362767,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -341550,44 +363015,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -341596,180 +363067,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -341779,30 +363272,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -341812,30 +363309,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -341845,62 +363346,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -341908,65 +363417,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -341975,18 +363492,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -341997,18 +363516,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -342022,18 +363543,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -342045,18 +363568,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -342069,18 +363594,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -342091,18 +363618,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -342115,18 +363644,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -342137,18 +363668,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -342160,18 +363693,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -342181,77 +363716,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -342260,18 +363805,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -342280,36 +363827,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -342319,36 +363870,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -342359,18 +363914,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -342380,20 +363937,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -342402,20 +363961,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -342423,30 +363984,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -342455,108 +364020,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -342569,15 +364148,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -342589,154 +364170,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -342745,94 +364293,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -342841,75 +364401,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -342918,15 +364488,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -342935,15 +364507,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -342952,35 +364526,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -342992,18 +364570,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -343012,65 +364592,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -343078,80 +364666,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -343161,95 +364759,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -343257,79 +364903,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -343338,15 +364994,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -343355,15 +365013,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -343372,181 +365032,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -343556,594 +365240,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -344214,24 +365976,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -344262,7 +366022,7 @@
         // State 0
         0,
         // State 1
-        -223,
+        -222,
         // State 2
         -63,
         // State 3
@@ -344352,25 +366112,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -344396,7 +366158,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -344420,7 +366182,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -344428,7 +366190,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -344452,22 +366214,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -344528,10 +366292,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -344552,10 +366317,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -345532,25 +367298,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -345562,14 +367328,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -345581,19 +367347,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -345605,109 +367371,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -345719,31 +367485,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -345754,68 +367520,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -345826,26 +367592,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -345857,40 +367623,40 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            221 => {
+            221 => __state_machine::SimulatedReduce::Accept,
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    nonterminal_produced: 97,
                 }
             }
-            222 => __state_machine::SimulatedReduce::Accept,
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -346113,12 +367879,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -346136,10 +367896,12 @@
 
         #[allow(dead_code)]
         pub fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::BinaryOp, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -346147,18 +367909,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -346172,7 +367936,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -346186,802 +367950,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::BinaryOp,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            222 => {
                 // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
                 let __sym0 = __pop_Variant27(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action24::<>(__sym0);
+                let __nt = super::__action24::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            222 => {
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -347076,16 +368839,6 @@
             _ => __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)>
@@ -347096,13 +368849,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -347186,16 +368939,6 @@
             _ => __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)>
@@ -347216,13 +368959,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -347366,63 +369109,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -347436,13 +369179,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -347456,43 +369199,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -347506,13 +369249,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -347546,13 +369289,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -347606,13 +369349,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -347647,1281 +369390,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -348930,59 +370835,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -348991,59 +370904,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -349052,216 +370973,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -349272,44 +371221,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -349318,180 +371273,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -349501,30 +371478,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -349534,30 +371515,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -349567,62 +371552,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -349630,65 +371623,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -349697,18 +371698,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -349719,18 +371722,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -349744,18 +371749,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -349767,18 +371774,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -349791,18 +371800,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -349813,18 +371824,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -349837,18 +371850,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -349859,18 +371874,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -349882,18 +371899,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -349903,77 +371922,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -349982,18 +372011,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -350002,36 +372033,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -350041,36 +372076,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -350081,18 +372120,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -350102,20 +372143,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -350124,20 +372167,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -350145,30 +372190,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -350177,108 +372226,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -350291,15 +372354,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -350311,154 +372376,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -350467,94 +372499,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -350563,75 +372607,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -350640,15 +372694,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -350657,15 +372713,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -350674,35 +372732,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -350714,18 +372776,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -350734,65 +372798,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -350800,80 +372872,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -350883,95 +372965,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -350979,79 +373109,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -351060,15 +373200,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -351077,15 +373219,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -351094,181 +373238,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -351278,594 +373446,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -351936,24 +374182,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -351974,7 +374218,7 @@
         // State 0
         0,
         // State 1
-        -224,
+        -223,
         // State 2
         -72,
         // State 3
@@ -352054,25 +374298,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -352098,7 +374344,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -352122,7 +374368,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -352130,7 +374376,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -352154,22 +374400,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -352230,10 +374478,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -352254,10 +374503,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -353234,25 +375484,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -353264,14 +375514,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -353283,19 +375533,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -353307,109 +375557,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -353421,31 +375671,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -353456,68 +375706,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -353528,26 +375778,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -353559,30 +375809,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -353592,13 +375842,13 @@
                     nonterminal_produced: 96,
                 }
             }
-            222 => {
+            222 => __state_machine::SimulatedReduce::Accept,
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 98,
                 }
             }
-            223 => __state_machine::SimulatedReduce::Accept,
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -353815,12 +376065,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -353838,10 +376082,12 @@
 
         #[allow(dead_code)]
         pub fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::BinaryOp, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -353849,18 +376095,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -353874,7 +376122,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -353888,802 +376136,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::BinaryOp,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            223 => {
                 // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
                 let __sym0 = __pop_Variant27(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action25::<>(__sym0);
+                let __nt = super::__action25::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            223 => {
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -354778,16 +377025,6 @@
             _ => __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)>
@@ -354798,13 +377035,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -354888,16 +377125,6 @@
             _ => __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)>
@@ -354918,13 +377145,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -355068,63 +377295,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -355138,13 +377365,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -355158,43 +377385,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -355208,13 +377435,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -355248,13 +377475,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -355308,13 +377535,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -355349,1281 +377576,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -356632,59 +379021,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -356693,59 +379090,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -356754,216 +379159,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -356974,44 +379407,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -357020,180 +379459,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -357203,30 +379664,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -357236,30 +379701,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -357269,62 +379738,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -357332,65 +379809,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -357399,18 +379884,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -357421,18 +379908,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -357446,18 +379935,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -357469,18 +379960,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -357493,18 +379986,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -357515,18 +380010,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -357539,18 +380036,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -357561,18 +380060,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -357584,18 +380085,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -357605,77 +380108,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -357684,18 +380197,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -357704,36 +380219,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -357743,36 +380262,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -357783,18 +380306,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -357804,20 +380329,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -357826,20 +380353,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -357847,30 +380376,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -357879,108 +380412,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -357993,15 +380540,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -358013,154 +380562,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -358169,94 +380685,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -358265,75 +380793,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -358342,15 +380880,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -358359,15 +380899,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -358376,35 +380918,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -358416,18 +380962,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -358436,65 +380984,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -358502,80 +381058,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -358585,95 +381151,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -358681,79 +381295,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -358762,15 +381386,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -358779,15 +381405,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -358796,181 +381424,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -358980,594 +381632,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -359638,24 +382368,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -359680,7 +382408,7 @@
         // State 0
         0,
         // State 1
-        -225,
+        -224,
         // State 2
         -75,
         // State 3
@@ -359764,25 +382492,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -359808,7 +382538,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -359832,7 +382562,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -359840,7 +382570,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -359864,22 +382594,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -359940,10 +382672,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -359964,10 +382697,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -360944,25 +383678,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -360974,14 +383708,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -360993,19 +383727,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -361017,109 +383751,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -361131,31 +383865,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -361166,68 +383900,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -361238,26 +383972,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -361269,30 +384003,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -361308,13 +384042,13 @@
                     nonterminal_produced: 97,
                 }
             }
-            223 => {
+            223 => __state_machine::SimulatedReduce::Accept,
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 99,
                 }
             }
-            224 => __state_machine::SimulatedReduce::Accept,
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -361525,12 +384259,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -361548,10 +384276,12 @@
 
         #[allow(dead_code)]
         pub fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::BinaryOp, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -361559,18 +384289,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -361584,7 +384316,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -361598,802 +384330,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::BinaryOp,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            224 => {
                 // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
                 let __sym0 = __pop_Variant27(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action26::<>(__sym0);
+                let __nt = super::__action26::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            224 => {
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -362488,16 +385219,6 @@
             _ => __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)>
@@ -362508,13 +385229,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -362598,16 +385319,6 @@
             _ => __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)>
@@ -362628,13 +385339,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -362778,63 +385489,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -362848,13 +385559,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -362868,43 +385579,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -362918,13 +385629,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -362958,13 +385669,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -363018,13 +385729,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -363059,1281 +385770,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -364342,59 +387215,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -364403,59 +387284,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -364464,216 +387353,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -364684,44 +387601,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -364730,180 +387653,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -364913,30 +387858,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -364946,30 +387895,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -364979,62 +387932,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -365042,65 +388003,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -365109,18 +388078,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -365131,18 +388102,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -365156,18 +388129,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -365179,18 +388154,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -365203,18 +388180,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -365225,18 +388204,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -365249,18 +388230,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -365271,18 +388254,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -365294,18 +388279,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -365315,77 +388302,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -365394,18 +388391,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -365414,36 +388413,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -365453,36 +388456,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -365493,18 +388500,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -365514,20 +388523,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -365536,20 +388547,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -365557,30 +388570,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -365589,108 +388606,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -365703,15 +388734,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -365723,154 +388756,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -365879,94 +388879,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -365975,75 +388987,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -366052,15 +389074,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -366069,15 +389093,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -366086,35 +389112,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -366126,18 +389156,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -366146,65 +389178,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -366212,80 +389252,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -366295,95 +389345,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -366391,79 +389489,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -366472,15 +389580,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -366489,15 +389599,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -366506,181 +389618,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -366690,594 +389826,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -367348,24 +390562,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -367375,7 +390587,7 @@
         // State 2
         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, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 3
-        0, -170, -170, -170, -170, 13, -170, -170, -170, -170, -170, 0, 14, -170, -170, 0, 0, -170, -170, -170, -170, -170, -170, -170, 15, -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, -167, -167, -167, -167, 13, -167, -167, -167, -167, -167, 0, 14, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, 15, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
         // State 4
         0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 66, 7, 0, 0, 8, 0, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 74, 0,
         // State 5
@@ -367385,13 +390597,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, 0, 66, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 8
-        84, 0, 0, 22, 0, 23, 0, 24, 0, 0, 85, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 66, 0, 0, 87, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 89,
+        84, 0, 0, 22, 0, 23, 0, 24, 0, 0, 85, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 66, 0, 0, 87, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 89,
         // State 9
         84, 0, 0, 22, 0, 23, 0, 24, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 66, 0, 0, 87, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 89,
         // State 10
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, -170, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, -167, 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,
         // State 11
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 14, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, 15, -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, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 14, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, 15, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
         // State 12
         84, 0, 0, 22, 0, 23, -80, 24, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 66, 0, 0, 87, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 89,
         // State 13
@@ -367425,7 +390637,7 @@
         // State 27
         84, 0, 0, 22, 0, 23, -82, 24, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 66, 0, 0, 87, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 89,
         // State 28
-        0, -170, -170, -170, -170, 13, -170, -170, -170, -170, -170, 0, 14, 0, -170, 0, 130, -170, -170, -170, 0, -170, -170, -170, 15, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        0, -167, -167, -167, -167, 13, -167, -167, -167, -167, -167, 0, 14, 0, -167, 0, 130, -167, -167, -167, 0, -167, -167, -167, 15, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 29
         84, 0, 0, 22, 0, 23, 0, 24, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 66, 0, 0, 87, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 89,
         // State 30
@@ -367483,9 +390695,9 @@
         // State 56
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 57
-        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 0,
         // State 58
-        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -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, -176, -176, -176, 0, 0, -176, 0, 0, 0, 0, -176, 0, 0, 0, -176, 0, 0, 0, -176, 0,
         // State 59
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 60
@@ -367495,7 +390707,7 @@
         // State 62
         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, -158, -158, -158, 0, 0, -158, 0, 0, 0, 0, -158, 0, 0, 0, -158, 0, 0, 0, -158, 0,
         // State 63
-        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -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, -177, -177, -177, 0, 0, -177, 0, 0, 0, 0, -177, 0, 0, 0, -177, 0, 0, 0, -177, 0,
         // State 64
         0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 65
@@ -367505,19 +390717,19 @@
         // State 67
         0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 68
-        0, 0, 0, 0, 0, 0, 0, -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, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
+        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
         // State 69
-        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, -184, -184, -184, 0, 0, -184, 0, 0, 0, 0, -184, 0, 0, 0, -184, 0, 0, 0, -184, 0,
+        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
         // State 70
-        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, -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,
+        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, -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 71
-        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
+        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
         // State 72
         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, -159, -159, -159, 0, 0, -159, 0, 0, 0, 0, -159, 0, 0, 0, -159, 0, 0, 0, -159, 0,
         // State 73
         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, -78, 0, 0, -78, -78, -78, 0, 0, -78, 0, 0, 0, 0, -78, 0, 0, 0, -78, 0, 0, 0, -78, 0,
         // State 74
-        0, 0, 0, 0, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, -185, -185, 0, 0, -185, 0, 0, 0, 0, -185, 0, 0, 0, -185, 0, 0, 0, -185, 0,
+        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 76
@@ -367525,39 +390737,39 @@
         // State 77
         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, -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 78
-        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, -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,
+        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, -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 79
-        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, -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,
+        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, -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 80
         0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, -111, -111, 0, 0, -111, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, -111, 0,
         // State 81
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, -197, -197, 0, 0, -197, -197, -197, 0, -197, -197, -197, 0, -197, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, -197, 0,
+        0, -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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, -194, 0,
         // State 82
-        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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, -198, 0,
+        0, -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, -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 83
-        -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, 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 84
         -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, 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 84
+        -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, 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,
         // State 85
-        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, -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 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, -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 86
+        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, -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,
         // State 87
-        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, -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,
+        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, -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 88
-        -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, 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,
+        -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, 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 89
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 90
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 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,
         // State 91
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, -174, -174, 0, 0, -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, -174, 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, -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 92
         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, 0,
         // State 93
         0, 0, 0, 0, 0, 0, -79, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 94
-        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, -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,
+        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, -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 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, 129, 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,
         // State 96
@@ -367613,7 +390825,7 @@
         // State 121
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 122
-        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, 0, -221, -221, -221, 0, 0, -221, 0, 0, 0, 0, -221, 0, 0, 0, -221, 0, 0, 0, -221, 0,
+        0, 0, 0, 0, 0, 0, 0, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 0, 0, -220, 0, 0, 0, 0, -220, 0, 0, 0, -220, 0, 0, 0, -220, 0,
         // State 123
         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, 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,
         // State 124
@@ -367625,17 +390837,17 @@
         // State 127
         -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
         // State 128
-        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, -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,
+        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, -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 129
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 130
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, -200, 0, 0, 0, -200, 48, 0, -200, 0, -200, 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, -200, 0, 0, -200, 0,
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, -199, 0, 0, 0, -199, 48, 0, -199, 0, -199, 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, -199, 0, 0, -199, 0,
         // State 131
         0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, -108, 0, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, -108, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0,
         // State 132
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 133
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 134
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 135
@@ -367643,7 +390855,7 @@
         // State 136
         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, -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 137
-        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, -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, -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, -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,
         // State 138
         0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, -109, 0, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, -109, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0,
         // State 139
@@ -367661,15 +390873,15 @@
         // State 145
         0, 0, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, -144, -144, 0, 0, -144, 0, 0, 0, 0, -144, 0, 0, 0, -144, 0, 0, 0, -144, 0,
         // State 146
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, -201, 0, 0, 0, -201, 53, 0, -201, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0,
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, -200, 0, 0, 0, -200, 53, 0, -200, 0, -200, 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, -200, 0, 0, -200, 0,
         // State 147
-        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, 0, -213, 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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 148
-        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, 0, -207, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 149
-        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, 0, -208, 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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 150
-        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, 0, -209, 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, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 151
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
         // State 152
@@ -367679,7 +390891,7 @@
         // State 154
         0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 155
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, -188, 0, 0, -188, 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, -188, 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, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
         // State 157
@@ -367697,13 +390909,13 @@
         // State 163
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
         // State 164
-        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, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
         // State 165
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
         // State 166
         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, -130, -130, -130, 0, 0, -130, 0, 0, 0, 0, -130, 0, 0, 0, -130, 0, 0, 0, -130, 0,
         // State 167
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, -202, 0, 0, 0, -202, 0, 0, -202, 0, -202, 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, -202, 0, 0, -202, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, -201, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0,
         // State 168
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 169
@@ -367713,7 +390925,7 @@
         // State 171
         0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 172
-        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, -203, 0, 0, 0, -203, 0, 0, -203, 0, -203, 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, -203, 0, 0, -203, 0,
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, -202, 0, 0, 0, -202, 0, 0, -202, 0, -202, 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, -202, 0, 0, -202, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -367828,7 +391040,7 @@
         // State 53
         0,
         // State 54
-        -226,
+        -225,
         // State 55
         0,
         // State 56
@@ -368146,22 +391358,22 @@
             63 => 58,
             65 => 59,
             69 => 4,
-            74 => match state {
+            72 => match state {
                 1 | 4 => 60,
                 2 => 66,
                 _ => 79,
             },
-            75 => match state {
+            73 => match state {
                 11 => 91,
                 _ => 70,
             },
-            76 => 11,
-            78 => 61,
-            79 => match state {
+            74 => 11,
+            76 => 61,
+            77 => match state {
                 4 => 72,
                 _ => 62,
             },
-            83 => match state {
+            81 => match state {
                 22 => 119,
                 26 => 124,
                 48 => 159,
@@ -368169,27 +391381,27 @@
                 53 => 170,
                 _ => 98,
             },
-            84 => match state {
+            82 => match state {
                 45 => 154,
                 _ => 143,
             },
-            86 => 80,
-            87 => 81,
-            88 => match state {
+            84 => 80,
+            85 => 81,
+            87 => match state {
                 30 => 131,
                 36 => 139,
                 43 => 151,
                 49 => 160,
                 _ => 153,
             },
-            90 => match state {
+            89 => match state {
                 40 => 147,
                 _ => 132,
             },
-            92 => 40,
-            93 => 20,
-            94 => 82,
-            95 => 63,
+            91 => 40,
+            92 => 20,
+            93 => 82,
+            94 => 63,
             _ => 0,
         }
     }
@@ -368259,25 +391471,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -368303,7 +391517,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -368327,7 +391541,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -368335,7 +391549,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -368359,22 +391573,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -368435,10 +391651,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -368459,10 +391676,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -369439,25 +392657,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -369469,14 +392687,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -369488,19 +392706,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -369512,109 +392730,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -369626,31 +392844,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -369661,68 +392879,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -369733,26 +392951,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -369764,30 +392982,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -369809,13 +393027,13 @@
                     nonterminal_produced: 98,
                 }
             }
-            224 => {
+            224 => __state_machine::SimulatedReduce::Accept,
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 100,
                 }
             }
-            225 => __state_machine::SimulatedReduce::Accept,
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -370020,12 +393238,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -370043,10 +393255,12 @@
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::Block, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -370054,18 +393268,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -370079,7 +393295,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -370093,802 +393309,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::Block,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            225 => {
                 // __Block = Block => ActionFn(7);
                 let __sym0 = __pop_Variant10(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action7::<>(__sym0);
+                let __nt = super::__action7::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            225 => {
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -370983,16 +394198,6 @@
             _ => __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)>
@@ -371003,13 +394208,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -371093,16 +394298,6 @@
             _ => __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)>
@@ -371123,13 +394318,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -371273,63 +394468,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -371343,13 +394538,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -371363,43 +394558,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -371413,13 +394608,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -371453,13 +394648,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -371513,13 +394708,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -371554,1281 +394749,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -372837,59 +396194,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -372898,59 +396263,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -372959,216 +396332,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -373179,44 +396580,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -373225,180 +396632,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -373408,30 +396837,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -373441,30 +396874,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -373474,62 +396911,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -373537,65 +396982,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -373604,18 +397057,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -373626,18 +397081,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -373651,18 +397108,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -373674,18 +397133,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -373698,18 +397159,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -373720,18 +397183,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -373744,18 +397209,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -373766,18 +397233,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -373789,18 +397258,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -373810,77 +397281,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -373889,18 +397370,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -373909,36 +397392,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -373948,36 +397435,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -373988,18 +397479,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -374009,20 +397502,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -374031,20 +397526,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -374052,30 +397549,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -374084,108 +397585,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -374198,15 +397713,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -374218,154 +397735,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -374374,94 +397858,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -374470,75 +397966,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -374547,15 +398053,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -374564,15 +398072,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -374581,35 +398091,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -374621,18 +398135,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -374641,65 +398157,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -374707,80 +398231,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -374790,95 +398324,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -374886,79 +398468,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -374967,15 +398559,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -374984,15 +398578,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -375001,181 +398597,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -375185,594 +398805,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -375843,24 +399541,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -375884,7 +399580,7 @@
         // State 9
         0, 0, 0, 79, 0, 0, -110, 0, 80, -110, 81, 0, 0, 0, 0, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, 82, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, -110, 0,
         // State 10
-        0, -170, -170, -170, -170, 22, -170, -170, -170, -170, -170, 0, 23, 0, -170, 0, 0, -170, -170, -170, 0, -170, -170, -170, 24, -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, -167, -167, -167, -167, 22, -167, -167, -167, -167, -167, 0, 23, 0, -167, 0, 0, -167, -167, -167, 0, -167, -167, -167, 24, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 11
         58, 0, 0, 13, 0, 25, 0, 15, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 37, 0, 0, 61, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 63,
         // State 12
@@ -375904,7 +399600,7 @@
         // State 19
         58, 0, 0, 13, 0, 25, 0, 15, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 37, 0, 0, 61, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 63,
         // State 20
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 23, 0, -169, 0, 0, -169, -169, -169, 0, -169, -169, -169, 24, -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, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 23, 0, -166, 0, 0, -166, -166, -166, 0, -166, -166, -166, 24, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 21
         58, 0, 0, 13, 0, 14, -80, 15, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 37, 0, 0, 61, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 63,
         // State 22
@@ -375916,7 +399612,7 @@
         // State 25
         58, 0, 0, 13, 0, 25, 0, 15, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 37, 0, 0, 61, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 63,
         // State 26
-        0, -170, -170, -170, -170, 22, -170, -170, -170, -170, -170, 0, 23, 0, -170, 0, 102, 0, -170, -170, 0, -170, -170, -170, 24, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        0, -167, -167, -167, -167, 22, -167, -167, -167, -167, -167, 0, 23, 0, -167, 0, 102, 0, -167, -167, 0, -167, -167, -167, 24, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 27
         0, 68, -119, -119, 69, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, -119, 70, 71, 0, 72, 73, 74, 0, -119, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 75, -119, 0,
         // State 28
@@ -375938,25 +399634,25 @@
         // State 36
         0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, 0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 0,
         // State 37
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, -200, 5, 0, -200, 0, -200, 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, -200, 0,
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, -199, 5, 0, -199, 0, -199, 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, -199, 0,
         // State 38
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 39
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 40
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 45, 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, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 42
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, -201, 16, 0, -201, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, -200, 16, 0, -200, 0, -200, 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, -200, 0,
         // State 43
-        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, 0, -213, 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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 44
-        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, 0, -207, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 45
-        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, 0, -208, 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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 46
-        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, 0, -209, 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, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 47
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 48
@@ -375968,31 +399664,31 @@
         // State 51
         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, -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 52
-        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, -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,
+        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, -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 53
-        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, -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,
+        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, -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 54
         0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, -111, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
         // State 55
-        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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, -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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
         // State 56
-        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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        0, -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, -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 57
-        -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, 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 58
         -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, 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 58
+        -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, 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,
         // State 59
-        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, -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 60
         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, -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 60
+        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, -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,
         // State 61
-        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, -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,
+        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, -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
-        -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, 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,
+        -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, 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 63
         0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 64
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, -202, 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, -202, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
         // State 65
         0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 66
@@ -376030,7 +399726,7 @@
         // State 82
         -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, 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 83
-        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, -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,
+        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, -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 84
         0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, -115, -115, -115, 0, -115, -115, -115, 0, -115, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
         // State 85
@@ -376052,25 +399748,25 @@
         // State 93
         0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, -117, -117, -117, 0, -117, -117, -117, 0, -117, -117, -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 94
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, 0, -174, 0, 0, -174, -174, -174, 0, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, 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, -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 95
         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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 96
         0, 0, 0, 0, 0, 0, -79, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 97
-        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, -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,
+        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, -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 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, 108, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 99
         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, -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 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, -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, -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, -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,
         // State 101
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 102
         0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, -109, 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, -109, 0,
         // State 103
-        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, -203, 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, -203, 0,
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, -202, 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, -202, 0,
         // State 104
         0, 0, 0, 0, 0, 0, -81, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 105
@@ -376078,7 +399774,7 @@
         // State 106
         -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
         // State 107
-        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, -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,
+        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, -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 108
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0,
         // State 109
@@ -376092,7 +399788,7 @@
         // State 113
         0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 114
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, -188, 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, -188, 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, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
         // State 116
@@ -376100,9 +399796,9 @@
         // State 117
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
         // State 118
-        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, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
         // State 119
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -376177,7 +399873,7 @@
         // State 33
         0,
         // State 34
-        -227,
+        -226,
         // State 35
         0,
         // State 36
@@ -376402,35 +400098,35 @@
                 _ => 10,
             },
             62 => 87,
-            74 => 53,
-            75 => match state {
+            72 => 53,
+            73 => match state {
                 20 => 94,
                 _ => 83,
             },
-            76 => 20,
-            83 => match state {
+            74 => 20,
+            81 => match state {
                 33 => 119,
                 _ => 88,
             },
-            84 => match state {
+            82 => match state {
                 32 => 113,
                 _ => 110,
             },
-            86 => 54,
-            87 => 55,
-            88 => match state {
+            84 => 54,
+            85 => 55,
+            87 => match state {
                 2 => 38,
                 6 => 63,
                 16 => 92,
                 _ => 48,
             },
-            90 => match state {
+            89 => match state {
                 3 => 43,
                 _ => 39,
             },
-            92 => 3,
-            93 => 11,
-            94 => 56,
+            91 => 3,
+            92 => 11,
+            93 => 56,
             _ => 0,
         }
     }
@@ -376500,25 +400196,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -376544,7 +400242,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -376568,7 +400266,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -376576,7 +400274,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -376600,22 +400298,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -376676,10 +400376,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -376700,10 +400401,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -377680,25 +401382,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -377710,14 +401412,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -377729,19 +401431,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -377753,109 +401455,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -377867,31 +401569,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -377902,68 +401604,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -377974,26 +401676,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -378005,30 +401707,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -378056,13 +401758,13 @@
                     nonterminal_produced: 99,
                 }
             }
-            225 => {
+            225 => __state_machine::SimulatedReduce::Accept,
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 101,
                 }
             }
-            226 => __state_machine::SimulatedReduce::Accept,
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -378261,12 +401963,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -378284,10 +401980,12 @@
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::Constant, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -378295,18 +401993,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -378320,7 +402020,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -378334,802 +402034,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::Constant,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            226 => {
                 // __Constant = Constant => ActionFn(33);
                 let __sym0 = __pop_Variant32(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action33::<>(__sym0);
+                let __nt = super::__action33::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            226 => {
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -379224,16 +402923,6 @@
             _ => __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)>
@@ -379244,13 +402933,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -379334,16 +403023,6 @@
             _ => __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)>
@@ -379364,13 +403043,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -379514,63 +403193,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -379584,13 +403263,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -379604,43 +403283,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -379654,13 +403333,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -379694,13 +403373,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -379754,13 +403433,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -379795,1281 +403474,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -381078,59 +404919,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -381139,59 +404988,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -381200,216 +405057,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -381420,44 +405305,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -381466,180 +405357,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -381649,30 +405562,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -381682,30 +405599,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -381715,62 +405636,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -381778,65 +405707,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -381845,18 +405782,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -381867,18 +405806,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -381892,18 +405833,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -381915,18 +405858,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -381939,18 +405884,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -381961,18 +405908,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -381985,18 +405934,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -382007,18 +405958,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -382030,18 +405983,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -382051,77 +406006,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -382130,18 +406095,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -382150,36 +406117,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -382189,36 +406160,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -382229,18 +406204,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -382250,20 +406227,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -382272,20 +406251,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -382293,30 +406274,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -382325,108 +406310,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -382439,15 +406438,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -382459,154 +406460,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -382615,94 +406583,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -382711,75 +406691,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -382788,15 +406778,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -382805,15 +406797,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -382822,35 +406816,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -382862,18 +406860,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -382882,65 +406882,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -382948,80 +406956,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -383031,95 +407049,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -383127,79 +407193,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -383208,15 +407284,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -383225,15 +407303,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -383242,181 +407322,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -383426,594 +407530,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -384084,24 +408266,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -384113,7 +408293,7 @@
         // State 3
         0, 0, 0, 58, 0, 0, -110, 0, 59, -110, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 61, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, -110, 0,
         // State 4
-        0, -170, -170, -170, -170, 15, -170, -170, -170, -170, -170, 0, 16, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, 17, -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, -167, -167, -167, -167, 15, -167, -167, -167, -167, -167, 0, 16, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, 17, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 5
         40, 0, 0, 7, 0, 18, 0, 9, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
         // State 6
@@ -384131,7 +408311,7 @@
         // State 12
         40, 0, 0, 7, 0, 18, 0, 9, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
         // State 13
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 16, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 17, -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, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 16, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 17, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 14
         40, 0, 0, 7, 0, 8, -80, 9, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
         // State 15
@@ -384143,7 +408323,7 @@
         // State 18
         40, 0, 0, 7, 0, 18, 0, 9, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
         // State 19
-        0, -170, -170, -170, -170, 15, -170, -170, -170, -170, -170, 0, 16, 0, -170, 0, 83, 0, -170, -170, 0, -170, -170, -170, 17, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        0, -167, -167, -167, -167, 15, -167, -167, -167, -167, -167, 0, 16, 0, -167, 0, 83, 0, -167, -167, 0, -167, -167, -167, 17, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 20
         0, 0, 0, 73, 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, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 21
@@ -384173,29 +408353,29 @@
         // State 33
         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, -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 34
-        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, 0, -199, 0, 0, 0, -199, -199, 0, -199, -199, -199, 0, -199, -199, -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,
+        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, -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 35
-        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, -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,
+        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, -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 36
         0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
         // State 37
-        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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, -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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
         // State 38
-        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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        0, -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, -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 39
-        -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, 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 40
         -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, 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 40
+        -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, 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,
         // State 41
-        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, -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,
+        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, -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, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, 0, -139, -139, -139, 0, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 0,
         // State 43
-        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, -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, -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, -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,
         // State 44
-        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, -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,
+        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, -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 45
-        -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, 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,
+        -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, 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
         -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
         // State 47
@@ -384229,7 +408409,7 @@
         // State 61
         -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, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
         // State 62
-        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, -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,
+        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, -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 63
         0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, -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 64
@@ -384243,45 +408423,45 @@
         // State 68
         0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 69
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, -200, 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, -200, 0,
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, -199, 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, -199, 0,
         // State 70
         0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 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, -108, 0,
         // State 71
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 72
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 73
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 74
         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, -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 75
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, 0, -174, 0, 0, 0, -174, -174, 0, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, 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, -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 76
         0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 77
         0, 0, 0, 0, 0, 0, -79, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 78
-        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, -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,
+        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, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
         // State 79
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 80
         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, -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 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, -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, -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, -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,
         // State 82
         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, 0,
         // State 83
         0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 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, -109, 0,
         // State 84
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, -200, 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, -200, 0,
         // State 85
-        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, 0, -213, 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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 86
-        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, 0, -207, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 87
-        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, 0, -208, 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, 0, -207, 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, 0, -209, 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, 0, -208, 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, -81, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 90
@@ -384289,7 +408469,7 @@
         // State 91
         -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
         // State 92
-        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, -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,
+        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, -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 93
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0,
         // State 94
@@ -384307,13 +408487,13 @@
         // State 100
         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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 101
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, -188, 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, -188, 0,
         // State 102
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
         // State 103
         0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 104
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
         // State 105
         0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 106
@@ -384323,13 +408503,13 @@
         // State 108
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
         // State 109
-        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, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
         // State 110
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
         // State 111
         0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 112
-        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 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, -203, 0,
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -384344,7 +408524,7 @@
         // State 3
         -110,
         // State 4
-        -170,
+        -167,
         // State 5
         0,
         // State 6
@@ -384362,7 +408542,7 @@
         // State 12
         0,
         // State 13
-        -169,
+        -166,
         // State 14
         0,
         // State 15
@@ -384398,33 +408578,33 @@
         // State 30
         0,
         // State 31
-        -228,
+        -227,
         // State 32
         -116,
         // State 33
         -118,
         // State 34
-        -199,
+        -196,
         // State 35
-        -220,
+        -219,
         // State 36
         -111,
         // State 37
-        -197,
+        -194,
         // State 38
-        -198,
+        -195,
         // State 39
         0,
         // State 40
         0,
         // State 41
-        -218,
+        -217,
         // State 42
         -139,
         // State 43
-        -217,
+        -216,
         // State 44
-        -219,
+        -218,
         // State 45
         0,
         // State 46
@@ -384460,7 +408640,7 @@
         // State 61
         0,
         // State 62
-        -173,
+        -170,
         // State 63
         -115,
         // State 64
@@ -384474,7 +408654,7 @@
         // State 68
         -114,
         // State 69
-        -200,
+        -199,
         // State 70
         -108,
         // State 71
@@ -384486,25 +408666,25 @@
         // State 74
         -117,
         // State 75
-        -174,
+        -171,
         // State 76
         0,
         // State 77
         0,
         // State 78
-        -171,
+        -168,
         // State 79
         0,
         // State 80
         -112,
         // State 81
-        -196,
+        -193,
         // State 82
         0,
         // State 83
         -109,
         // State 84
-        -201,
+        -200,
         // State 85
         0,
         // State 86
@@ -384520,7 +408700,7 @@
         // State 91
         0,
         // State 92
-        -172,
+        -169,
         // State 93
         0,
         // State 94
@@ -384544,7 +408724,7 @@
         // State 103
         0,
         // State 104
-        -202,
+        -201,
         // State 105
         0,
         // State 106
@@ -384560,7 +408740,7 @@
         // State 111
         0,
         // State 112
-        -203,
+        -202,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
@@ -384613,34 +408793,34 @@
                 _ => 4,
             },
             62 => 66,
-            74 => 35,
-            75 => match state {
+            72 => 35,
+            73 => match state {
                 13 => 75,
                 _ => 62,
             },
-            76 => 13,
-            83 => match state {
+            74 => 13,
+            81 => match state {
                 30 => 110,
                 _ => 67,
             },
-            84 => match state {
+            82 => match state {
                 27 => 100,
                 _ => 95,
             },
-            86 => 36,
-            87 => 37,
-            88 => match state {
+            84 => 36,
+            85 => 37,
+            87 => match state {
                 9 => 70,
                 28 => 103,
                 _ => 97,
             },
-            90 => match state {
+            89 => match state {
                 20 => 85,
                 _ => 71,
             },
-            92 => 20,
-            93 => 5,
-            94 => 38,
+            91 => 20,
+            92 => 5,
+            93 => 38,
             _ => 0,
         }
     }
@@ -384710,25 +408890,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -384754,7 +408936,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -384778,7 +408960,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -384786,7 +408968,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -384810,22 +408992,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -384886,10 +409070,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -384910,10 +409095,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -385890,25 +410076,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -385920,14 +410106,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -385939,19 +410125,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -385963,109 +410149,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -386077,31 +410263,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -386112,68 +410298,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -386184,26 +410370,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -386215,30 +410401,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -386272,13 +410458,13 @@
                     nonterminal_produced: 100,
                 }
             }
-            226 => {
+            226 => __state_machine::SimulatedReduce::Accept,
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 102,
                 }
             }
-            227 => __state_machine::SimulatedReduce::Accept,
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -386471,12 +410657,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -386494,10 +410674,12 @@
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::Expression, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -386505,18 +410687,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -386530,7 +410714,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -386544,802 +410728,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::Expression,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            227 => {
                 // __Expression = Expression => ActionFn(23);
                 let __sym0 = __pop_Variant14(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action23::<>(__sym0);
+                let __nt = super::__action23::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            227 => {
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -387434,16 +411617,6 @@
             _ => __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)>
@@ -387454,13 +411627,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -387544,16 +411717,6 @@
             _ => __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)>
@@ -387574,13 +411737,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -387724,63 +411887,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -387794,13 +411957,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -387814,43 +411977,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -387864,13 +412027,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -387904,13 +412067,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -387964,13 +412127,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -388005,1281 +412168,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -389288,59 +413613,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -389349,59 +413682,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -389410,216 +413751,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -389630,44 +413999,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -389676,180 +414051,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -389859,30 +414256,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -389892,30 +414293,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -389925,62 +414330,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -389988,65 +414401,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -390055,18 +414476,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -390077,18 +414500,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -390102,18 +414527,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -390125,18 +414552,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -390149,18 +414578,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -390171,18 +414602,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -390195,18 +414628,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -390217,18 +414652,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -390240,18 +414677,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -390261,77 +414700,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -390340,18 +414789,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -390360,36 +414811,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -390399,36 +414854,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -390439,18 +414898,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -390460,20 +414921,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -390482,20 +414945,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -390503,30 +414968,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -390535,108 +415004,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -390649,15 +415132,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -390669,154 +415154,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -390825,94 +415277,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -390921,75 +415385,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -390998,15 +415472,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -391015,15 +415491,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -391032,35 +415510,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -391072,18 +415554,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -391092,65 +415576,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -391158,80 +415650,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -391241,95 +415743,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -391337,79 +415887,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -391418,15 +415978,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -391435,15 +415997,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -391452,181 +416016,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -391636,594 +416224,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -392294,34 +416960,32 @@
         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),
+        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),
     }
     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, 0, 38, 0, 0, 0, 0, 0, 39, 0, 0, 40, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, -170, -170, -170, -170, 5, -170, -170, -170, -170, -170, 0, 6, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, 7, -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, -167, -167, -167, -167, 5, -167, -167, -167, -167, -167, 0, 6, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, 7, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 2
         46, 0, 0, 12, 0, 13, 0, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 39, 0, 0, 40, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 3
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 6, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 7, -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, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 6, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 7, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 4
         46, 0, 0, 12, 0, 13, -80, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 39, 0, 0, 40, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 5
@@ -392355,7 +417019,7 @@
         // State 19
         46, 0, 0, 12, 0, 3, 0, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 39, 0, 0, 40, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 20
-        0, -170, -170, -170, -170, 5, -170, -170, -170, -170, -170, 0, 6, 0, -170, 0, 87, 0, -170, -170, 0, -170, -170, -170, 7, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        0, -167, -167, -167, -167, 5, -167, -167, -167, -167, -167, 0, 6, 0, -167, 0, 87, 0, -167, -167, 0, -167, -167, -167, 7, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 21
         0, 0, 0, 83, 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, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 22
@@ -392379,25 +417043,25 @@
         // State 31
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 32
-        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, -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,
+        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, -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 33
-        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, -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,
+        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, -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 34
         0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
         // State 35
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, -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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
         // State 36
-        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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        0, -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, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, 0,
         // State 37
-        0, -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, -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,
+        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, -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 38
         0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, 0, -139, -139, -139, 0, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 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, -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, -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, -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,
         // State 40
-        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, -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,
+        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, -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 41
-        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, -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,
+        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, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, 0,
         // State 42
         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, 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,
         // State 43
@@ -392405,23 +417069,23 @@
         // State 44
         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, -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 45
-        -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, 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
         -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, 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
+        -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, 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,
         // State 47
-        -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, 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,
+        -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, 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 48
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, 0, -174, 0, 0, 0, -174, -174, 0, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, 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, -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 49
         0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 50
         0, 0, 0, 0, 0, 0, -79, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 51
-        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, -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,
+        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, -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 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, 79, 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,
         // State 53
-        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, -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, -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, -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,
         // State 54
         -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
         // State 55
@@ -392471,15 +417135,15 @@
         // State 77
         -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
         // State 78
-        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, -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,
+        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, -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 79
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, -200, 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, -200, 0,
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, -199, 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, -199, 0,
         // State 80
         0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 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, -108, 0,
         // State 81
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 82
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 83
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 84
@@ -392493,15 +417157,15 @@
         // State 88
         -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, -25,
         // State 89
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, -200, 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, -200, 0,
         // State 90
-        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, 0, -213, 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, 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, -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, 0, -207, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 92
-        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, 0, -208, 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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 93
-        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, 0, -209, 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, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 94
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0,
         // State 95
@@ -392517,13 +417181,13 @@
         // State 100
         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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 101
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, -188, 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, -188, 0,
         // State 102
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
         // State 103
         0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 104
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
         // State 105
         0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 106
@@ -392533,13 +417197,13 @@
         // State 108
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
         // State 109
-        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, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
         // State 110
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
         // State 111
         0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 112
-        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 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, -203, 0,
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -392548,11 +417212,11 @@
         // State 0
         0,
         // State 1
-        -170,
+        -167,
         // State 2
         0,
         // State 3
-        -169,
+        -166,
         // State 4
         0,
         // State 5
@@ -392608,27 +417272,27 @@
         // State 30
         0,
         // State 31
-        -229,
+        -228,
         // State 32
-        -199,
+        -196,
         // State 33
-        -220,
+        -219,
         // State 34
         -111,
         // State 35
-        -197,
+        -194,
         // State 36
-        -198,
+        -195,
         // State 37
-        -218,
+        -217,
         // State 38
         -139,
         // State 39
-        -217,
+        -216,
         // State 40
-        -219,
+        -218,
         // State 41
-        -173,
+        -170,
         // State 42
         0,
         // State 43
@@ -392642,17 +417306,17 @@
         // State 47
         0,
         // State 48
-        -174,
+        -171,
         // State 49
         0,
         // State 50
         0,
         // State 51
-        -171,
+        -168,
         // State 52
         0,
         // State 53
-        -196,
+        -193,
         // State 54
         0,
         // State 55
@@ -392702,7 +417366,7 @@
         // State 77
         0,
         // State 78
-        -172,
+        -169,
         // State 79
         0,
         // State 80
@@ -392825,34 +417489,34 @@
                 _ => 1,
             },
             62 => 72,
-            74 => 33,
-            75 => match state {
+            72 => 33,
+            73 => match state {
                 3 => 48,
                 _ => 41,
             },
-            76 => 3,
-            83 => match state {
+            74 => 3,
+            81 => match state {
                 30 => 110,
                 _ => 73,
             },
-            84 => match state {
+            82 => match state {
                 27 => 100,
                 _ => 96,
             },
-            86 => 34,
-            87 => 35,
-            88 => match state {
+            84 => 34,
+            85 => 35,
+            87 => match state {
                 15 => 80,
                 28 => 103,
                 _ => 98,
             },
-            90 => match state {
+            89 => match state {
                 21 => 90,
                 _ => 81,
             },
-            92 => 21,
-            93 => 10,
-            94 => 36,
+            91 => 21,
+            92 => 10,
+            93 => 36,
             _ => 0,
         }
     }
@@ -392922,25 +417586,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -392966,7 +417632,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -392990,7 +417656,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -392998,7 +417664,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -393022,22 +417688,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -393098,10 +417766,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -393122,10 +417791,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -394102,25 +418772,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -394132,14 +418802,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -394151,19 +418821,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -394175,109 +418845,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -394289,31 +418959,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -394324,68 +418994,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -394396,26 +419066,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -394427,30 +419097,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -394490,13 +419160,13 @@
                     nonterminal_produced: 101,
                 }
             }
-            227 => {
+            227 => __state_machine::SimulatedReduce::Accept,
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 103,
                 }
             }
-            228 => __state_machine::SimulatedReduce::Accept,
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -394683,12 +419353,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -394706,10 +419370,12 @@
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::Expression, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -394717,18 +419383,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -394742,7 +419410,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -394756,802 +419424,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::Expression,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            228 => {
                 // __Expression0 = Expression0 => ActionFn(18);
                 let __sym0 = __pop_Variant14(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action18::<>(__sym0);
+                let __nt = super::__action18::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            228 => {
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -395646,16 +420313,6 @@
             _ => __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)>
@@ -395666,13 +420323,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -395756,16 +420413,6 @@
             _ => __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)>
@@ -395786,13 +420433,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -395936,63 +420583,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -396006,13 +420653,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -396026,43 +420673,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -396076,13 +420723,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -396116,13 +420763,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -396176,13 +420823,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -396217,1281 +420864,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -397500,59 +422309,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -397561,59 +422378,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -397622,216 +422447,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -397842,44 +422695,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -397888,180 +422747,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -398071,30 +422952,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -398104,30 +422989,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -398137,62 +423026,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -398200,65 +423097,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -398267,18 +423172,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -398289,18 +423196,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -398314,18 +423223,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -398337,18 +423248,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -398361,18 +423274,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -398383,18 +423298,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -398407,18 +423324,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -398429,18 +423348,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -398452,18 +423373,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -398473,77 +423396,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -398552,18 +423485,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -398572,36 +423507,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -398611,36 +423550,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -398651,18 +423594,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -398672,20 +423617,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -398694,20 +423641,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -398715,30 +423664,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -398747,108 +423700,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -398861,15 +423828,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -398881,154 +423850,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -399037,94 +423973,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -399133,75 +424081,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -399210,15 +424168,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -399227,15 +424187,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -399244,35 +424206,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -399284,18 +424250,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -399304,65 +424272,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -399370,80 +424346,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -399453,95 +424439,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -399549,79 +424583,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -399630,15 +424674,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -399647,15 +424693,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -399664,181 +424712,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -399848,594 +424920,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -400506,30 +425656,28 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
         39, 0, 0, 4, 0, 5, 0, 6, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 42, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
         // State 1
-        0, -170, -170, -170, -170, 8, -170, -170, -170, -170, -170, 0, 9, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, 10, -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, -167, -167, -167, -167, 8, -167, -167, -167, -167, -167, 0, 9, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, 10, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 2
         39, 0, 0, 4, 0, 5, 0, 6, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 42, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
         // State 3
@@ -400539,7 +425687,7 @@
         // State 5
         39, 0, 0, 4, 0, 5, 0, 6, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 42, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
         // State 6
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 9, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 10, -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, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 9, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 10, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 7
         39, 0, 0, 4, 0, 15, -80, 6, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 42, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
         // State 8
@@ -400567,7 +425715,7 @@
         // State 19
         39, 0, 0, 4, 0, 5, 0, 6, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 42, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
         // State 20
-        0, -170, -170, -170, -170, 8, -170, -170, -170, -170, -170, 0, 9, 0, -170, 0, 87, 0, -170, -170, 0, -170, -170, -170, 10, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        0, -167, -167, -167, -167, 8, -167, -167, -167, -167, -167, 0, 9, 0, -167, 0, 87, 0, -167, -167, 0, -167, -167, -167, 10, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 21
         0, 0, 0, 84, 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, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 22
@@ -400593,31 +425741,31 @@
         // 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 33
-        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, -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,
+        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, -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 34
-        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, -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,
+        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, -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 35
         0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
         // State 36
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, -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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
         // State 37
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        0, -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, -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 38
-        -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, 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 39
         -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, 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 39
+        -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, 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,
         // State 40
-        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, -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,
+        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, -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, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, 0, -139, -139, -139, 0, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 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, -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, -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, -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,
         // State 43
-        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, -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,
+        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, -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
-        -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, 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,
+        -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, 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
-        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, -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,
+        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, -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 46
         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, -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 47
@@ -400629,19 +425777,19 @@
         // State 50
         0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 51
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, 0, -174, 0, 0, 0, -174, -174, 0, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, 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, -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 52
         0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 53
         0, 0, 0, 0, 0, 0, -79, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 54
-        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, -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,
+        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, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
         // State 55
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 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,
         // State 56
         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, -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, -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, -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, -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, -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,
         // State 58
         -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
         // State 59
@@ -400685,15 +425833,15 @@
         // State 78
         -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
         // State 79
-        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, -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,
+        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, -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 80
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, -200, 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, -200, 0,
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, -199, 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, -199, 0,
         // State 81
         0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 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, -108, 0,
         // State 82
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 83
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 84
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 85
@@ -400705,15 +425853,15 @@
         // State 88
         -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, -25,
         // State 89
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, -200, 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, -200, 0,
         // State 90
-        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, 0, -213, 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, 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, -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, 0, -207, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 92
-        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, 0, -208, 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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 93
-        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, 0, -209, 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, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 94
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0,
         // State 95
@@ -400729,13 +425877,13 @@
         // State 100
         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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 101
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, -188, 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, -188, 0,
         // State 102
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
         // State 103
         0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 104
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
         // State 105
         0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 106
@@ -400745,13 +425893,13 @@
         // State 108
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
         // State 109
-        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, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
         // State 110
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
         // State 111
         0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 112
-        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 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, -203, 0,
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -400760,7 +425908,7 @@
         // State 0
         0,
         // State 1
-        -170,
+        -167,
         // State 2
         0,
         // State 3
@@ -400770,7 +425918,7 @@
         // State 5
         0,
         // State 6
-        -169,
+        -166,
         // State 7
         0,
         // State 8
@@ -400822,33 +425970,33 @@
         // State 31
         -116,
         // State 32
-        -230,
+        -229,
         // State 33
-        -199,
+        -196,
         // State 34
-        -220,
+        -219,
         // State 35
         -111,
         // State 36
-        -197,
+        -194,
         // State 37
-        -198,
+        -195,
         // State 38
         0,
         // State 39
         0,
         // State 40
-        -218,
+        -217,
         // State 41
         -139,
         // State 42
-        -217,
+        -216,
         // State 43
-        -219,
+        -218,
         // State 44
         0,
         // State 45
-        -173,
+        -170,
         // State 46
         -115,
         // State 47
@@ -400860,19 +426008,19 @@
         // State 50
         -114,
         // State 51
-        -174,
+        -171,
         // State 52
         0,
         // State 53
         0,
         // State 54
-        -171,
+        -168,
         // State 55
         0,
         // State 56
         -112,
         // State 57
-        -196,
+        -193,
         // State 58
         0,
         // State 59
@@ -400916,7 +426064,7 @@
         // State 78
         0,
         // State 79
-        -172,
+        -169,
         // State 80
         0,
         // State 81
@@ -401035,34 +426183,34 @@
                 _ => 1,
             },
             62 => 74,
-            74 => 34,
-            75 => match state {
+            72 => 34,
+            73 => match state {
                 6 => 51,
                 _ => 45,
             },
-            76 => 6,
-            83 => match state {
+            74 => 6,
+            81 => match state {
                 30 => 110,
                 _ => 75,
             },
-            84 => match state {
+            82 => match state {
                 27 => 100,
                 _ => 96,
             },
-            86 => 35,
-            87 => 36,
-            88 => match state {
+            84 => 35,
+            85 => 36,
+            87 => match state {
                 16 => 81,
                 28 => 103,
                 _ => 98,
             },
-            90 => match state {
+            89 => match state {
                 21 => 90,
                 _ => 82,
             },
-            92 => 21,
-            93 => 2,
-            94 => 37,
+            91 => 21,
+            92 => 2,
+            93 => 37,
             _ => 0,
         }
     }
@@ -401132,25 +426280,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -401176,7 +426326,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -401200,7 +426350,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -401208,7 +426358,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -401232,22 +426382,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -401308,10 +426460,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -401332,10 +426485,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -402312,25 +427466,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -402342,14 +427496,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -402361,19 +427515,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -402385,109 +427539,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -402499,31 +427653,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -402534,68 +427688,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -402606,26 +427760,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -402637,30 +427791,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -402706,13 +427860,13 @@
                     nonterminal_produced: 102,
                 }
             }
-            228 => {
+            228 => __state_machine::SimulatedReduce::Accept,
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 104,
                 }
             }
-            229 => __state_machine::SimulatedReduce::Accept,
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -402893,12 +428047,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -402916,10 +428064,12 @@
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::Expression, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -402927,18 +428077,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -402952,7 +428104,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -402966,802 +428118,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::Expression,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            229 => {
                 // __Expression1 = Expression1 => ActionFn(19);
                 let __sym0 = __pop_Variant14(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action19::<>(__sym0);
+                let __nt = super::__action19::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            229 => {
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -403856,16 +429007,6 @@
             _ => __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)>
@@ -403876,13 +429017,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -403966,16 +429107,6 @@
             _ => __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)>
@@ -403996,13 +429127,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -404146,63 +429277,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -404216,13 +429347,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -404236,43 +429367,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -404286,13 +429417,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -404326,13 +429457,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -404386,13 +429517,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -404427,1281 +429558,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -405710,59 +431003,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -405771,59 +431072,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -405832,216 +431141,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -406052,44 +431389,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -406098,180 +431441,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -406281,30 +431646,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -406314,30 +431683,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -406347,62 +431720,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -406410,65 +431791,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -406477,18 +431866,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -406499,18 +431890,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -406524,18 +431917,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -406547,18 +431942,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -406571,18 +431968,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -406593,18 +431992,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -406617,18 +432018,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -406639,18 +432042,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -406662,18 +432067,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -406683,77 +432090,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -406762,18 +432179,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -406782,36 +432201,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -406821,36 +432244,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -406861,18 +432288,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -406882,20 +432311,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -406904,20 +432335,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -406925,30 +432358,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -406957,108 +432394,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -407071,15 +432522,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -407091,154 +432544,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -407247,94 +432667,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -407343,75 +432775,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -407420,15 +432862,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -407437,15 +432881,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -407454,35 +432900,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -407494,18 +432944,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -407514,65 +432966,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -407580,80 +433040,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -407663,95 +433133,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -407759,79 +433277,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -407840,15 +433368,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -407857,15 +433387,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -407874,181 +433406,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -408058,594 +433614,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -408716,24 +434350,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -408741,7 +434373,7 @@
         // State 1
         0, 47, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 50, 0, 51, 52, 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, 54, 0, 0,
         // State 2
-        0, -170, -170, -170, -170, 10, -170, -170, -170, -170, -170, 0, 11, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, 12, -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, -167, -167, -167, -167, 10, -167, -167, -167, -167, -167, 0, 11, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, 12, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 3
         40, 0, 0, 5, 0, 6, 0, 7, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
         // State 4
@@ -408753,7 +434385,7 @@
         // State 7
         40, 0, 0, 5, 0, 6, 0, 7, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
         // State 8
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 11, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 12, -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, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 11, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 12, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 9
         40, 0, 0, 5, 0, 17, -80, 7, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
         // State 10
@@ -408779,7 +434411,7 @@
         // State 20
         40, 0, 0, 5, 0, 6, 0, 7, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
         // State 21
-        0, -170, -170, -170, -170, 10, -170, -170, -170, -170, -170, 0, 11, 0, -170, 0, 87, 0, -170, -170, 0, -170, -170, -170, 12, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        0, -167, -167, -167, -167, 10, -167, -167, -167, -167, -167, 0, 11, 0, -167, 0, 87, 0, -167, -167, 0, -167, -167, -167, 12, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 22
         0, 0, 0, 85, 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, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 23
@@ -408805,29 +434437,29 @@
         // State 33
         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, -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 34
-        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, 0, -199, 0, 0, 0, -199, -199, 0, -199, -199, -199, 0, -199, -199, -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,
+        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, -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 35
-        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, -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,
+        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, -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 36
         0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
         // State 37
-        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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, -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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
         // State 38
-        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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        0, -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, -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 39
-        -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, 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 40
         -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, 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 40
+        -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, 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,
         // State 41
-        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, -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,
+        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, -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, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, 0, -139, -139, -139, 0, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 0,
         // State 43
-        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, -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, -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, -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,
         // State 44
-        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, -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,
+        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, -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 45
-        -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, 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,
+        -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, 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
         -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
         // State 47
@@ -408845,7 +434477,7 @@
         // State 53
         -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, 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 54
-        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, -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,
+        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, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, 0,
         // State 55
         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, -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 56
@@ -408857,19 +434489,19 @@
         // State 59
         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, -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 60
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, 0, -174, 0, 0, 0, -174, -174, 0, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, 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, -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 61
         0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 62
         0, 0, 0, 0, 0, 0, -79, 0, 0, 80, 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,
         // State 63
-        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, -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,
+        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, -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 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, 81, 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,
         // State 65
         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, -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 66
-        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, -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, -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, -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,
         // 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, 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
@@ -408897,15 +434529,15 @@
         // State 79
         -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
         // State 80
-        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, -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,
+        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, -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 81
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, -200, 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, -200, 0,
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, -199, 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, -199, 0,
         // State 82
         0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 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, -108, 0,
         // State 83
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 84
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 92, 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, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 86
@@ -408915,15 +434547,15 @@
         // State 88
         -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, -25,
         // State 89
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -200, 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, -200, 0,
         // State 90
-        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, 0, -213, 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, 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, -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, 0, -207, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 92
-        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, 0, -208, 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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 93
-        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, 0, -209, 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, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 94
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0,
         // State 95
@@ -408939,13 +434571,13 @@
         // State 100
         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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 101
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, -188, 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, -188, 0,
         // State 102
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
         // State 103
         0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 104
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
         // State 105
         0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 106
@@ -408955,13 +434587,13 @@
         // State 108
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
         // State 109
-        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, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 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, -189, 0,
         // State 110
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
         // State 111
         0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 112
-        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 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, -203, 0,
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -408970,9 +434602,9 @@
         // State 0
         0,
         // State 1
-        -231,
+        -230,
         // State 2
-        -170,
+        -167,
         // State 3
         0,
         // State 4
@@ -408984,7 +434616,7 @@
         // State 7
         0,
         // State 8
-        -169,
+        -166,
         // State 9
         0,
         // State 10
@@ -409036,27 +434668,27 @@
         // State 33
         -118,
         // State 34
-        -199,
+        -196,
         // State 35
-        -220,
+        -219,
         // State 36
         -111,
         // State 37
-        -197,
+        -194,
         // State 38
-        -198,
+        -195,
         // State 39
         0,
         // State 40
         0,
         // State 41
-        -218,
+        -217,
         // State 42
         -139,
         // State 43
-        -217,
+        -216,
         // State 44
-        -219,
+        -218,
         // State 45
         0,
         // State 46
@@ -409076,7 +434708,7 @@
         // State 53
         0,
         // State 54
-        -173,
+        -170,
         // State 55
         -115,
         // State 56
@@ -409088,19 +434720,19 @@
         // State 59
         -117,
         // State 60
-        -174,
+        -171,
         // State 61
         0,
         // State 62
         0,
         // State 63
-        -171,
+        -168,
         // State 64
         0,
         // State 65
         -112,
         // State 66
-        -196,
+        -193,
         // State 67
         0,
         // State 68
@@ -409128,7 +434760,7 @@
         // State 79
         0,
         // State 80
-        -172,
+        -169,
         // State 81
         0,
         // State 82
@@ -409245,34 +434877,34 @@
                 _ => 2,
             },
             62 => 75,
-            74 => 35,
-            75 => match state {
+            72 => 35,
+            73 => match state {
                 8 => 60,
                 _ => 54,
             },
-            76 => 8,
-            83 => match state {
+            74 => 8,
+            81 => match state {
                 31 => 110,
                 _ => 76,
             },
-            84 => match state {
+            82 => match state {
                 28 => 100,
                 _ => 96,
             },
-            86 => 36,
-            87 => 37,
-            88 => match state {
+            84 => 36,
+            85 => 37,
+            87 => match state {
                 18 => 82,
                 29 => 103,
                 _ => 98,
             },
-            90 => match state {
+            89 => match state {
                 22 => 90,
                 _ => 83,
             },
-            92 => 22,
-            93 => 3,
-            94 => 38,
+            91 => 22,
+            92 => 3,
+            93 => 38,
             _ => 0,
         }
     }
@@ -409342,25 +434974,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -409386,7 +435020,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -409410,7 +435044,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -409418,7 +435052,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -409442,22 +435076,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -409518,10 +435154,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -409542,10 +435179,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -410522,25 +436160,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -410552,14 +436190,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -410571,19 +436209,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -410595,109 +436233,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -410709,31 +436347,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -410744,68 +436382,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -410816,26 +436454,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -410847,30 +436485,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -410922,13 +436560,13 @@
                     nonterminal_produced: 103,
                 }
             }
-            229 => {
+            229 => __state_machine::SimulatedReduce::Accept,
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 105,
                 }
             }
-            230 => __state_machine::SimulatedReduce::Accept,
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -411103,12 +436741,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -411126,10 +436758,12 @@
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::Expression, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -411137,18 +436771,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -411162,7 +436798,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -411176,802 +436812,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::Expression,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            230 => {
                 // __Expression2 = Expression2 => ActionFn(20);
                 let __sym0 = __pop_Variant14(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action20::<>(__sym0);
+                let __nt = super::__action20::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            230 => {
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -412066,16 +437701,6 @@
             _ => __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)>
@@ -412086,13 +437711,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -412176,16 +437801,6 @@
             _ => __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)>
@@ -412206,13 +437821,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -412356,63 +437971,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -412426,13 +438041,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -412446,43 +438061,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -412496,13 +438111,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -412536,13 +438151,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -412596,13 +438211,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -412637,1281 +438252,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -413920,59 +439697,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -413981,59 +439766,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -414042,216 +439835,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -414262,44 +440083,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -414308,180 +440135,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -414491,30 +440340,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -414524,30 +440377,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -414557,62 +440414,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -414620,65 +440485,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -414687,18 +440560,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -414709,18 +440584,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -414734,18 +440611,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -414757,18 +440636,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -414781,18 +440662,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -414803,18 +440686,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -414827,18 +440712,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -414849,18 +440736,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -414872,18 +440761,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -414893,77 +440784,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -414972,18 +440873,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -414992,36 +440895,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -415031,36 +440938,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -415071,18 +440982,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -415092,20 +441005,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -415114,20 +441029,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -415135,30 +441052,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -415167,108 +441088,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -415281,15 +441216,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -415301,154 +441238,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -415457,94 +441361,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -415553,75 +441469,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -415630,15 +441556,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -415647,15 +441575,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -415664,35 +441594,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -415704,18 +441638,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -415724,65 +441660,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -415790,80 +441734,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -415873,95 +441827,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -415969,79 +441971,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -416050,15 +442062,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -416067,15 +442081,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -416084,181 +442100,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -416268,594 +442308,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -416926,24 +443044,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -416953,7 +443069,7 @@
         // State 2
         0, 0, 55, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 3
-        0, -170, -170, -170, -170, 12, -170, -170, -170, -170, -170, 0, 13, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, 14, -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, -167, -167, -167, -167, 12, -167, -167, -167, -167, -167, 0, 13, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, 14, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 4
         40, 0, 0, 6, 0, 7, 0, 8, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
         // State 5
@@ -416967,7 +443083,7 @@
         // State 9
         40, 0, 0, 6, 0, 7, 0, 8, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
         // State 10
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 13, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 14, -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, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 13, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 14, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 11
         40, 0, 0, 6, 0, 18, -80, 8, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
         // State 12
@@ -416991,7 +443107,7 @@
         // State 21
         40, 0, 0, 6, 0, 7, 0, 8, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
         // State 22
-        0, -170, -170, -170, -170, 12, -170, -170, -170, -170, -170, 0, 13, 0, -170, 0, 87, 0, -170, -170, 0, -170, -170, -170, 14, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        0, -167, -167, -167, -167, 12, -167, -167, -167, -167, -167, 0, 13, 0, -167, 0, 87, 0, -167, -167, 0, -167, -167, -167, 14, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 23
         0, 0, 0, 85, 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, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 24
@@ -417015,29 +443131,29 @@
         // State 33
         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, -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 34
-        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, 0, -199, 0, 0, 0, -199, -199, 0, -199, -199, -199, 0, -199, -199, -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,
+        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, -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 35
-        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, -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,
+        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, -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 36
         0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
         // State 37
-        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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, -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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
         // State 38
-        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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        0, -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, -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 39
-        -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, 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 40
         -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, 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 40
+        -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, 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,
         // State 41
-        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, -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,
+        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, -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, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, 0, -139, -139, -139, 0, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 0,
         // State 43
-        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, -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, -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, -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,
         // State 44
-        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, -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,
+        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, -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 45
-        -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, 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,
+        -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, 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
         -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
         // State 47
@@ -417061,7 +443177,7 @@
         // State 56
         -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, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 57
-        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, -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,
+        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, -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 58
         0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, -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 59
@@ -417073,19 +443189,19 @@
         // State 62
         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, -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 63
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, 0, -174, 0, 0, 0, -174, -174, 0, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, 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, -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 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, 0,
         // State 65
         0, 0, 0, 0, 0, 0, -79, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 66
-        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, -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,
+        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, -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 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, 81, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 68
         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, -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 69
-        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, -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, -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, -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,
         // State 70
         -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 71
@@ -417107,15 +443223,15 @@
         // State 79
         -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
         // State 80
-        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, -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,
+        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, -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 81
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, -200, 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, -200, 0,
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, -199, 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, -199, 0,
         // State 82
         0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 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, -108, 0,
         // State 83
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 84
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 92, 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, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 86
@@ -417125,15 +443241,15 @@
         // State 88
         -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, -25,
         // State 89
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -200, 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, -200, 0,
         // State 90
-        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, 0, -213, 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, 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, -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, 0, -207, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 92
-        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, 0, -208, 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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 93
-        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, 0, -209, 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, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 94
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0,
         // State 95
@@ -417149,13 +443265,13 @@
         // State 100
         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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 101
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, -188, 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, -188, 0,
         // State 102
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
         // State 103
         0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 104
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
         // State 105
         0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 106
@@ -417165,13 +443281,13 @@
         // State 108
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
         // State 109
-        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, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
         // State 110
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
         // State 111
         0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 112
-        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 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, -203, 0,
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -417182,9 +443298,9 @@
         // State 1
         -120,
         // State 2
-        -232,
+        -231,
         // State 3
-        -170,
+        -167,
         // State 4
         0,
         // State 5
@@ -417198,7 +443314,7 @@
         // State 9
         0,
         // State 10
-        -169,
+        -166,
         // State 11
         0,
         // State 12
@@ -417246,27 +443362,27 @@
         // State 33
         -118,
         // State 34
-        -199,
+        -196,
         // State 35
-        -220,
+        -219,
         // State 36
         -111,
         // State 37
-        -197,
+        -194,
         // State 38
-        -198,
+        -195,
         // State 39
         0,
         // State 40
         0,
         // State 41
-        -218,
+        -217,
         // State 42
         -139,
         // State 43
-        -217,
+        -216,
         // State 44
-        -219,
+        -218,
         // State 45
         0,
         // State 46
@@ -417292,7 +443408,7 @@
         // State 56
         0,
         // State 57
-        -173,
+        -170,
         // State 58
         -115,
         // State 59
@@ -417304,19 +443420,19 @@
         // State 62
         -117,
         // State 63
-        -174,
+        -171,
         // State 64
         0,
         // State 65
         0,
         // State 66
-        -171,
+        -168,
         // State 67
         0,
         // State 68
         -112,
         // State 69
-        -196,
+        -193,
         // State 70
         0,
         // State 71
@@ -417338,7 +443454,7 @@
         // State 79
         0,
         // State 80
-        -172,
+        -169,
         // State 81
         0,
         // State 82
@@ -417455,34 +443571,34 @@
                 _ => 3,
             },
             62 => 75,
-            74 => 35,
-            75 => match state {
+            72 => 35,
+            73 => match state {
                 10 => 63,
                 _ => 57,
             },
-            76 => 10,
-            83 => match state {
+            74 => 10,
+            81 => match state {
                 31 => 110,
                 _ => 76,
             },
-            84 => match state {
+            82 => match state {
                 28 => 100,
                 _ => 96,
             },
-            86 => 36,
-            87 => 37,
-            88 => match state {
+            84 => 36,
+            85 => 37,
+            87 => match state {
                 20 => 82,
                 29 => 103,
                 _ => 98,
             },
-            90 => match state {
+            89 => match state {
                 23 => 90,
                 _ => 83,
             },
-            92 => 23,
-            93 => 4,
-            94 => 38,
+            91 => 23,
+            92 => 4,
+            93 => 38,
             _ => 0,
         }
     }
@@ -417552,25 +443668,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -417596,7 +443714,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -417620,7 +443738,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -417628,7 +443746,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -417652,22 +443770,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -417728,10 +443848,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -417752,10 +443873,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -418732,25 +444854,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -418762,14 +444884,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -418781,19 +444903,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -418805,109 +444927,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -418919,31 +445041,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -418954,68 +445076,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -419026,26 +445148,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -419057,30 +445179,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -419138,13 +445260,13 @@
                     nonterminal_produced: 104,
                 }
             }
-            230 => {
+            230 => __state_machine::SimulatedReduce::Accept,
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 106,
                 }
             }
-            231 => __state_machine::SimulatedReduce::Accept,
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -419313,12 +445435,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -419336,10 +445452,12 @@
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::Expression, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -419347,18 +445465,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -419372,7 +445492,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -419386,802 +445506,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::Expression,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            231 => {
                 // __Expression3 = Expression3 => ActionFn(21);
                 let __sym0 = __pop_Variant14(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action21::<>(__sym0);
+                let __nt = super::__action21::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            231 => {
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -420276,16 +446395,6 @@
             _ => __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)>
@@ -420296,13 +446405,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -420386,16 +446495,6 @@
             _ => __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)>
@@ -420416,13 +446515,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -420566,63 +446665,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -420636,13 +446735,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -420656,43 +446755,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -420706,13 +446805,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -420746,13 +446845,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -420806,13 +446905,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -420847,1281 +446946,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -422130,59 +448391,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -422191,59 +448460,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -422252,216 +448529,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -422472,44 +448777,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -422518,180 +448829,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -422701,30 +449034,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -422734,30 +449071,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -422767,62 +449108,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -422830,65 +449179,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -422897,18 +449254,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -422919,18 +449278,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -422944,18 +449305,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -422967,18 +449330,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -422991,18 +449356,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -423013,18 +449380,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -423037,18 +449406,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -423059,18 +449430,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -423082,18 +449455,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -423103,77 +449478,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -423182,18 +449567,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -423202,36 +449589,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -423241,36 +449632,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -423281,18 +449676,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -423302,20 +449699,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -423324,20 +449723,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -423345,30 +449746,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -423377,108 +449782,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -423491,15 +449910,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -423511,154 +449932,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -423667,94 +450055,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -423763,75 +450163,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -423840,15 +450250,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -423857,15 +450269,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -423874,35 +450288,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -423914,18 +450332,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -423934,65 +450354,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -424000,80 +450428,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -424083,95 +450521,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -424179,79 +450665,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -424260,15 +450756,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -424277,15 +450775,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -424294,181 +450794,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -424478,594 +451002,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -425136,24 +451738,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -425165,7 +451765,7 @@
         // State 3
         0, 0, 0, 58, 0, 0, 0, 0, 59, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0,
         // State 4
-        0, -170, -170, -170, -170, 14, -170, -170, -170, -170, -170, 0, 15, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, 16, -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, -167, -167, -167, -167, 14, -167, -167, -167, -167, -167, 0, 15, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, 16, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 5
         40, 0, 0, 7, 0, 8, 0, 9, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
         // State 6
@@ -425181,7 +451781,7 @@
         // State 11
         40, 0, 0, 7, 0, 8, 0, 9, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
         // State 12
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 15, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 16, -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, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 15, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 16, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 13
         40, 0, 0, 7, 0, 19, -80, 9, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 43, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
         // State 14
@@ -425203,7 +451803,7 @@
         // State 22
         0, 0, 0, 85, 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, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 23
-        0, -170, -170, -170, -170, 14, -170, -170, -170, -170, -170, 0, 15, 0, -170, 0, 87, 0, -170, -170, 0, -170, -170, -170, 16, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        0, -167, -167, -167, -167, 14, -167, -167, -167, -167, -167, 0, 15, 0, -167, 0, 87, 0, -167, -167, 0, -167, -167, -167, 16, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 24
         0, 0, 0, 85, 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, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 25
@@ -425225,29 +451825,29 @@
         // State 33
         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, -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 34
-        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, 0, -199, 0, 0, 0, -199, -199, 0, -199, -199, -199, 0, -199, -199, -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,
+        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, -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 35
-        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, -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,
+        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, -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 36
         0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
         // State 37
-        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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, -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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
         // State 38
-        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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        0, -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, -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 39
-        -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, 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 40
         -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, 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 40
+        -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, 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,
         // State 41
-        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, -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,
+        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, -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, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, 0, -139, -139, -139, 0, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 0,
         // State 43
-        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, -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, -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, -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,
         // State 44
-        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, -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,
+        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, -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 45
-        -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, 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,
+        -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, 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
         -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
         // State 47
@@ -425281,7 +451881,7 @@
         // State 61
         -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, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
         // State 62
-        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, -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,
+        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, -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 63
         0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, -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 64
@@ -425293,19 +451893,19 @@
         // State 67
         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, -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 68
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, 0, -174, 0, 0, 0, -174, -174, 0, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, 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, -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 69
         0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 70
         0, 0, 0, 0, 0, 0, -79, 0, 0, 80, 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,
         // State 71
-        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, -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,
+        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, -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 72
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 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,
         // State 73
         0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, -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 74
-        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, -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, -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, -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,
         // State 75
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,
         // State 76
@@ -425317,15 +451917,15 @@
         // State 79
         -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
         // State 80
-        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, -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,
+        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, -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 81
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, -200, 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, -200, 0,
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, -199, 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, -199, 0,
         // State 82
         0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 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, -108, 0,
         // State 83
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 84
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 92, 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, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 86
@@ -425335,15 +451935,15 @@
         // State 88
         -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, -25,
         // State 89
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -200, 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, -200, 0,
         // State 90
-        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, 0, -213, 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, 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, -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, 0, -207, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 92
-        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, 0, -208, 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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 93
-        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, 0, -209, 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, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 94
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0,
         // State 95
@@ -425359,13 +451959,13 @@
         // State 100
         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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 101
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, -188, 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, -188, 0,
         // State 102
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
         // State 103
         0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 104
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
         // State 105
         0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 106
@@ -425375,13 +451975,13 @@
         // State 108
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
         // State 109
-        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, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 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, -189, 0,
         // State 110
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
         // State 111
         0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 112
-        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 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, -203, 0,
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -425394,9 +451994,9 @@
         // State 2
         -122,
         // State 3
-        -233,
+        -232,
         // State 4
-        -170,
+        -167,
         // State 5
         0,
         // State 6
@@ -425412,7 +452012,7 @@
         // State 11
         0,
         // State 12
-        -169,
+        -166,
         // State 13
         0,
         // State 14
@@ -425456,27 +452056,27 @@
         // State 33
         -118,
         // State 34
-        -199,
+        -196,
         // State 35
-        -220,
+        -219,
         // State 36
         -111,
         // State 37
-        -197,
+        -194,
         // State 38
-        -198,
+        -195,
         // State 39
         0,
         // State 40
         0,
         // State 41
-        -218,
+        -217,
         // State 42
         -139,
         // State 43
-        -217,
+        -216,
         // State 44
-        -219,
+        -218,
         // State 45
         0,
         // State 46
@@ -425512,7 +452112,7 @@
         // State 61
         0,
         // State 62
-        -173,
+        -170,
         // State 63
         -115,
         // State 64
@@ -425524,19 +452124,19 @@
         // State 67
         -117,
         // State 68
-        -174,
+        -171,
         // State 69
         0,
         // State 70
         0,
         // State 71
-        -171,
+        -168,
         // State 72
         0,
         // State 73
         -112,
         // State 74
-        -196,
+        -193,
         // State 75
         0,
         // State 76
@@ -425548,7 +452148,7 @@
         // State 79
         0,
         // State 80
-        -172,
+        -169,
         // State 81
         0,
         // State 82
@@ -425667,34 +452267,34 @@
                 _ => 4,
             },
             62 => 75,
-            74 => 35,
-            75 => match state {
+            72 => 35,
+            73 => match state {
                 12 => 68,
                 _ => 62,
             },
-            76 => 12,
-            83 => match state {
+            74 => 12,
+            81 => match state {
                 31 => 110,
                 _ => 76,
             },
-            84 => match state {
+            82 => match state {
                 28 => 100,
                 _ => 96,
             },
-            86 => 36,
-            87 => 37,
-            88 => match state {
+            84 => 36,
+            85 => 37,
+            87 => match state {
                 22 => 82,
                 29 => 103,
                 _ => 98,
             },
-            90 => match state {
+            89 => match state {
                 24 => 90,
                 _ => 83,
             },
-            92 => 24,
-            93 => 5,
-            94 => 38,
+            91 => 24,
+            92 => 5,
+            93 => 38,
             _ => 0,
         }
     }
@@ -425764,25 +452364,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -425808,7 +452410,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -425832,7 +452434,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -425840,7 +452442,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -425864,22 +452466,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -425940,10 +452544,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -425964,10 +452569,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -426944,25 +453550,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -426974,14 +453580,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -426993,19 +453599,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -427017,109 +453623,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -427131,31 +453737,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -427166,68 +453772,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -427238,26 +453844,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -427269,30 +453875,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -427356,13 +453962,13 @@
                     nonterminal_produced: 105,
                 }
             }
-            231 => {
+            231 => __state_machine::SimulatedReduce::Accept,
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 107,
                 }
             }
-            232 => __state_machine::SimulatedReduce::Accept,
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -427525,12 +454131,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -427548,10 +454148,12 @@
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::Expression, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -427559,18 +454161,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -427584,7 +454188,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -427598,802 +454202,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::Expression,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            232 => {
                 // __Expression4 = Expression4 => ActionFn(22);
                 let __sym0 = __pop_Variant14(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action22::<>(__sym0);
+                let __nt = super::__action22::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            232 => {
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -428488,16 +455091,6 @@
             _ => __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)>
@@ -428508,13 +455101,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -428598,16 +455191,6 @@
             _ => __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)>
@@ -428628,13 +455211,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -428778,63 +455361,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -428848,13 +455431,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -428868,43 +455451,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -428918,13 +455501,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -428958,13 +455541,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -429018,13 +455601,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -429059,1281 +455642,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -430342,59 +457087,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -430403,59 +457156,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -430464,216 +457225,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -430684,44 +457473,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -430730,180 +457525,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -430913,30 +457730,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -430946,30 +457767,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -430979,62 +457804,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -431042,65 +457875,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -431109,18 +457950,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -431131,18 +457974,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -431156,18 +458001,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -431179,18 +458026,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -431203,18 +458052,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -431225,18 +458076,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -431249,18 +458102,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -431271,18 +458126,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -431294,18 +458151,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -431315,77 +458174,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -431394,18 +458263,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -431414,36 +458285,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -431453,36 +458328,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -431493,18 +458372,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -431514,20 +458395,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -431536,20 +458419,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -431557,30 +458442,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -431589,108 +458478,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -431703,15 +458606,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -431723,154 +458628,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -431879,94 +458751,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -431975,75 +458859,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -432052,15 +458946,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -432069,15 +458965,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -432086,35 +458984,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -432126,18 +459028,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -432146,65 +459050,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -432212,80 +459124,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -432295,95 +459217,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -432391,79 +459361,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -432472,15 +459452,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -432489,15 +459471,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -432506,181 +459490,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -432690,594 +459698,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -433348,24 +460434,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -433381,7 +460465,7 @@
         // State 5
         0, 0, 0, 64, 0, 0, -110, 0, 65, -110, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 67, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, -110, 0,
         // State 6
-        0, -170, -170, -170, -170, 2, -170, -170, -170, -170, -170, 0, 17, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, 18, -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, -167, -167, -167, -167, 2, -167, -167, -167, -167, -167, 0, 17, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, 18, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 7
         44, 0, 0, 9, 0, 19, 0, 11, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 34, 0, 0, 47, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 49,
         // State 8
@@ -433399,7 +460483,7 @@
         // State 14
         44, 0, 0, 9, 0, 19, 0, 11, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 34, 0, 0, 47, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 49,
         // State 15
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 17, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 18, -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, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 17, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 18, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 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, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 17
@@ -433409,7 +460493,7 @@
         // State 19
         44, 0, 0, 9, 0, 19, 0, 11, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 34, 0, 0, 47, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 49,
         // State 20
-        0, -170, -170, -170, -170, 2, -170, -170, -170, -170, -170, 0, 17, 0, -170, 0, 88, 0, -170, -170, 0, -170, -170, -170, 18, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        0, -167, -167, -167, -167, 2, -167, -167, -167, -167, -167, 0, 17, 0, -167, 0, 88, 0, -167, -167, 0, -167, -167, -167, 18, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 21
         0, 0, 0, 80, 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, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 22
@@ -433445,27 +460529,27 @@
         // State 37
         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, -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 38
-        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, -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,
+        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, -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, -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, -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,
+        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, -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, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
         // State 41
-        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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, -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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
         // State 42
-        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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        0, -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, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, 0,
         // State 43
-        -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, 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
         -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, 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 44
+        -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, 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,
         // State 45
-        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, -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, -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, -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, -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,
         // State 47
-        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, -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,
+        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, -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
-        -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, 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,
+        -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, 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
         0, 0, 0, 0, 0, 0, -81, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 50
@@ -433505,7 +460589,7 @@
         // State 67
         -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 68
-        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, -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,
+        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, -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, -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, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
         // State 70
@@ -433521,43 +460605,43 @@
         // State 75
         -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, -25,
         // State 76
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, -200, 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, -200, 0,
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, -199, 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, -199, 0,
         // State 77
         0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 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, -108, 0,
         // State 78
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 79
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 81
         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, -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 82
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, 0, -174, 0, 0, 0, -174, -174, 0, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, 0,
-        // State 83
         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, -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, -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, -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 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, 95, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 85
         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, -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 86
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, -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, -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, -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,
         // State 87
         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, 0,
         // State 88
         0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 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, -109, 0,
         // State 89
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, -200, 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, -200, 0,
         // State 90
-        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, 0, -213, 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, 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, -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, 0, -207, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 92
-        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, 0, -208, 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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 93
-        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, 0, -209, 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, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 94
-        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, -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,
+        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, -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 95
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0,
         // State 96
@@ -433573,13 +460657,13 @@
         // State 101
         0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 102
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, -188, 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, -188, 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, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
         // State 104
         0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 105
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
         // State 106
         0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 107
@@ -433589,13 +460673,13 @@
         // State 109
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
         // State 110
-        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, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
         // State 111
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
         // State 112
         0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 113
-        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 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, -203, 0,
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -433664,7 +460748,7 @@
         // State 30
         0,
         // State 31
-        -234,
+        -233,
         // State 32
         0,
         // State 33
@@ -433884,34 +460968,34 @@
                 _ => 6,
             },
             62 => 72,
-            74 => 39,
-            75 => match state {
+            72 => 39,
+            73 => match state {
                 15 => 82,
                 _ => 68,
             },
-            76 => 15,
-            83 => match state {
+            74 => 15,
+            81 => match state {
                 30 => 111,
                 _ => 73,
             },
-            84 => match state {
+            82 => match state {
                 27 => 101,
                 _ => 97,
             },
-            86 => 40,
-            87 => 41,
-            88 => match state {
+            84 => 40,
+            85 => 41,
+            87 => match state {
                 11 => 77,
                 28 => 104,
                 _ => 99,
             },
-            90 => match state {
+            89 => match state {
                 21 => 90,
                 _ => 78,
             },
-            92 => 21,
-            93 => 7,
-            94 => 42,
+            91 => 21,
+            92 => 7,
+            93 => 42,
             _ => 0,
         }
     }
@@ -433981,25 +461065,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -434025,7 +461111,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -434049,7 +461135,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -434057,7 +461143,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -434081,22 +461167,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -434157,10 +461245,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -434181,10 +461270,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -435161,25 +462251,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -435191,14 +462281,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -435210,19 +462300,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -435234,109 +462324,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -435348,31 +462438,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -435383,68 +462473,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -435455,26 +462545,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -435486,30 +462576,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -435579,13 +462669,13 @@
                     nonterminal_produced: 106,
                 }
             }
-            232 => {
+            232 => __state_machine::SimulatedReduce::Accept,
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 108,
                 }
             }
-            233 => __state_machine::SimulatedReduce::Accept,
             234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -435742,12 +462832,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -435765,10 +462849,12 @@
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::FnCallExpr, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -435776,18 +462862,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -435801,7 +462889,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -435815,802 +462903,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::FnCallExpr,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            233 => {
                 // __FnCallExpr = FnCallExpr => ActionFn(9);
                 let __sym0 = __pop_Variant34(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action9::<>(__sym0);
+                let __nt = super::__action9::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            233 => {
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -436705,16 +463792,6 @@
             _ => __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)>
@@ -436725,13 +463802,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -436815,16 +463892,6 @@
             _ => __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)>
@@ -436845,13 +463912,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -436995,63 +464062,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -437065,13 +464132,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -437085,43 +464152,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -437135,13 +464202,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -437175,13 +464242,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -437235,13 +464302,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -437276,1281 +464343,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -438559,59 +465788,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -438620,59 +465857,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -438681,216 +465926,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -438901,44 +466174,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -438947,180 +466226,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -439130,30 +466431,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -439163,30 +466468,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -439196,62 +466505,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -439259,65 +466576,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -439326,18 +466651,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -439348,18 +466675,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -439373,18 +466702,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -439396,18 +466727,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -439420,18 +466753,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -439442,18 +466777,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -439466,18 +466803,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -439488,18 +466827,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -439511,18 +466852,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -439532,77 +466875,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -439611,18 +466964,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -439631,36 +466986,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -439670,36 +467029,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -439710,18 +467073,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -439731,20 +467096,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -439753,20 +467120,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -439774,30 +467143,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -439806,108 +467179,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -439920,15 +467307,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -439940,154 +467329,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -440096,94 +467452,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -440192,75 +467560,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -440269,15 +467647,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -440286,15 +467666,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -440303,35 +467685,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -440343,18 +467729,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -440363,65 +467751,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -440429,80 +467825,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -440512,95 +467918,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -440608,79 +468062,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -440689,15 +468153,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -440706,15 +468172,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -440723,181 +468191,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -440907,594 +468399,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -441565,24 +469135,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -441604,25 +469172,25 @@
         // State 8
         0, 0, 0, 0, 0, 0, 0, 0, 0, -139, 0, 0, 0, 0, 0, -139, 0, 0, -139, 0, 0, 0, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 9
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 4, 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,
         // State 10
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 11
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 12
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 0, -205, 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, 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, -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, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 6, 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,
         // State 15
-        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, 0, -213, 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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 16
-        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, 0, -207, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 17
-        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, 0, -208, 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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 18
-        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, 0, -209, 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, 0, -208, 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, 0,
         // State 20
@@ -441630,7 +469198,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, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 22
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 23
         0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 24
@@ -441638,7 +469206,7 @@
         // State 25
         0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 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, -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, 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, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -441657,13 +469225,13 @@
         // State 5
         0,
         // State 6
-        -235,
+        -234,
         // State 7
         0,
         // State 8
         -139,
         // State 9
-        -200,
+        -199,
         // State 10
         -126,
         // State 11
@@ -441673,7 +469241,7 @@
         // State 13
         0,
         // State 14
-        -201,
+        -200,
         // State 15
         0,
         // State 16
@@ -441689,7 +469257,7 @@
         // State 21
         0,
         // State 22
-        -202,
+        -201,
         // State 23
         0,
         // State 24
@@ -441697,7 +469265,7 @@
         // State 25
         0,
         // State 26
-        -203,
+        -202,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
@@ -441712,16 +469280,16 @@
                 2 => 14,
                 _ => 9,
             },
-            88 => match state {
+            87 => match state {
                 1 => 10,
                 4 => 21,
                 _ => 20,
             },
-            90 => match state {
+            89 => match state {
                 2 => 15,
                 _ => 11,
             },
-            92 => 2,
+            91 => 2,
             _ => 0,
         }
     }
@@ -441791,25 +469359,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -441835,7 +469405,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -441859,7 +469429,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -441867,7 +469437,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -441891,22 +469461,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -441967,10 +469539,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -441991,10 +469564,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -442971,25 +470545,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -443001,14 +470575,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -443020,19 +470594,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -443044,109 +470618,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -443158,31 +470732,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -443193,68 +470767,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -443265,26 +470839,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -443296,30 +470870,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -443395,13 +470969,13 @@
                     nonterminal_produced: 107,
                 }
             }
-            233 => {
+            233 => __state_machine::SimulatedReduce::Accept,
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 109,
                 }
             }
-            234 => __state_machine::SimulatedReduce::Accept,
             235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -443552,12 +471126,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -443575,10 +471143,12 @@
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::FnParam, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -443586,18 +471156,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -443611,7 +471183,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -443625,802 +471197,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::FnParam,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            234 => {
                 // __FnParam = FnParam => ActionFn(31);
                 let __sym0 = __pop_Variant16(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action31::<>(__sym0);
+                let __nt = super::__action31::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            234 => {
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -444515,16 +472086,6 @@
             _ => __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)>
@@ -444535,13 +472096,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -444625,16 +472186,6 @@
             _ => __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)>
@@ -444655,13 +472206,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -444805,63 +472356,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -444875,13 +472426,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -444895,43 +472446,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -444945,13 +472496,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -444985,13 +472536,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -445045,13 +472596,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -445086,1281 +472637,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -446369,59 +474082,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -446430,59 +474151,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -446491,216 +474220,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -446711,44 +474468,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -446757,180 +474520,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -446940,30 +474725,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -446973,30 +474762,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -447006,62 +474799,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -447069,65 +474870,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -447136,18 +474945,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -447158,18 +474969,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -447183,18 +474996,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -447206,18 +475021,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -447230,18 +475047,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -447252,18 +475071,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -447276,18 +475097,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -447298,18 +475121,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -447321,18 +475146,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -447342,77 +475169,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -447421,18 +475258,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -447441,36 +475280,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -447480,36 +475323,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -447520,18 +475367,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -447541,20 +475390,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -447563,20 +475414,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -447584,30 +475437,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -447616,108 +475473,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -447730,15 +475601,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -447750,154 +475623,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -447906,94 +475746,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -448002,75 +475854,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -448079,15 +475941,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -448096,15 +475960,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -448113,35 +475979,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -448153,18 +476023,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -448173,65 +476045,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -448239,80 +476119,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -448322,95 +476212,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -448418,79 +476356,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -448499,15 +476447,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -448516,15 +476466,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -448533,181 +476485,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -448717,594 +476693,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -449375,24 +477429,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -449410,7 +477462,7 @@
         // State 6
         0, 0, 0, 83, 0, 0, -110, 0, 84, -110, 85, 0, 0, -110, 0, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, 86, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 87, 0, -110, 0,
         // State 7
-        0, -170, -170, -170, -170, 20, -170, -170, -170, -170, -170, 0, 21, -170, -170, 0, 0, -170, -170, -170, -170, -170, -170, -170, 22, -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, -167, -167, -167, -167, 20, -167, -167, -167, -167, -167, 0, 21, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, 22, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
         // State 8
         65, 0, 0, 10, 0, 23, 0, 12, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 57, 0, 0, 68, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 70,
         // State 9
@@ -449432,7 +477484,7 @@
         // State 17
         65, 0, 0, 10, 0, 23, 0, 12, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 57, 0, 0, 68, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 70,
         // State 18
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 21, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, 22, -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, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 21, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, 22, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
         // State 19
         65, 0, 0, 10, 0, 11, -80, 12, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 57, 0, 0, 68, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 70,
         // State 20
@@ -449444,7 +477496,7 @@
         // State 23
         65, 0, 0, 10, 0, 23, 0, 12, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 57, 0, 0, 68, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 70,
         // State 24
-        0, -170, -170, -170, -170, 20, -170, -170, -170, -170, -170, 0, 21, 0, -170, 0, 118, -170, -170, -170, 0, -170, -170, -170, 22, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        0, -167, -167, -167, -167, 20, -167, -167, -167, -167, -167, 0, 21, 0, -167, 0, 118, -167, -167, -167, 0, -167, -167, -167, 22, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 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, 14, 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 26
@@ -449458,7 +477510,7 @@
         // 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, 57, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 31
-        65, 0, 0, 10, 0, 11, 0, 12, 0, 0, 66, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 57, 0, 0, 68, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 70,
+        65, 0, 0, 10, 0, 11, 0, 12, 0, 0, 66, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 57, 0, 0, 68, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 70,
         // State 32
         65, 0, 0, 10, 0, 11, 0, 12, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 57, 0, 0, 68, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 70,
         // State 33
@@ -449472,7 +477524,7 @@
         // State 37
         0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 38
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, -170, 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, 21, 0, 0, 0, 0, 0, 0, 0, -167, 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,
         // State 39
         65, 0, 0, 10, 0, 11, 0, 12, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 57, 0, 0, 68, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 70,
         // State 40
@@ -449514,27 +477566,27 @@
         // State 58
         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, -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 59
-        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, -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,
+        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, -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 60
-        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, -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,
+        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, -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 61
         0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, -111, -111, 0, 0, -111, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, -111, 0,
         // State 62
-        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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, -197, 0,
+        0, -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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, -194, 0,
         // State 63
-        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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, -198, 0,
+        0, -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, -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 64
-        -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, 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 65
         -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, 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 65
+        -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, 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,
         // State 66
-        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, -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 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, -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 67
+        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, -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,
         // State 68
-        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, -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,
+        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, -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 69
-        -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, 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,
+        -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, 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
         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, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
         // State 71
@@ -449570,7 +477622,7 @@
         // State 86
         -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, 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 87
-        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, -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,
+        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, -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 88
         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, -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 89
@@ -449584,13 +477636,13 @@
         // State 93
         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, -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 94
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, -200, 0, 0, 0, -200, 38, 0, -200, 0, -200, 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, -200, 0, 0, -200, 0,
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, -199, 0, 0, 0, -199, 38, 0, -199, 0, -199, 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, -199, 0, 0, -199, 0,
         // State 95
         0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, -108, 0, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, -108, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0,
         // State 96
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 97
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 98
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 99
@@ -449598,9 +477650,9 @@
         // State 100
         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, 0,
         // State 101
-        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 0,
         // State 102
-        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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, -176, -176, -176, 0, 0, -176, 0, 0, 0, 0, -176, 0, 0, 0, -176, 0, 0, 0, -176, 0,
         // State 103
         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, 0, 0, 0, 0, 0, 0,
         // State 104
@@ -449610,25 +477662,25 @@
         // State 106
         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, -158, -158, -158, 0, 0, -158, 0, 0, 0, 0, -158, 0, 0, 0, -158, 0, 0, 0, -158, 0,
         // State 107
-        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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, -177, -177, -177, 0, 0, -177, 0, 0, 0, 0, -177, 0, 0, 0, -177, 0, 0, 0, -177, 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, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 109
         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, -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 110
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, -174, -174, 0, 0, -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, -174, 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, -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 111
         0, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 112
         0, 0, 0, 0, 0, 0, -79, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 113
-        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, -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,
+        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, -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 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, 139, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 115
         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, -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 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, -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, -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, -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,
         // State 117
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 118
@@ -449636,35 +477688,35 @@
         // State 119
         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, -130, -130, -130, 0, 0, -130, 0, 0, 0, 0, -130, 0, 0, 0, -130, 0, 0, 0, -130, 0,
         // State 120
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, -201, 0, 0, 0, -201, 47, 0, -201, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0,
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, -200, 0, 0, 0, -200, 47, 0, -200, 0, -200, 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, -200, 0, 0, -200, 0,
         // State 121
-        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, 0, -213, 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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 122
-        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, 0, -207, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 123
-        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, 0, -208, 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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 124
-        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, 0, -209, 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, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 125
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
         // 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, 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, -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, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
+        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
         // State 128
-        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, -184, -184, -184, 0, 0, -184, 0, 0, 0, 0, -184, 0, 0, 0, -184, 0, 0, 0, -184, 0,
+        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
         // State 129
-        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
+        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
         // State 130
         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, -159, -159, -159, 0, 0, -159, 0, 0, 0, 0, -159, 0, 0, 0, -159, 0, 0, 0, -159, 0,
         // State 131
         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, -78, 0, 0, -78, -78, -78, 0, 0, -78, 0, 0, 0, 0, -78, 0, 0, 0, -78, 0, 0, 0, -78, 0,
         // State 132
-        0, 0, 0, 0, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, -185, -185, 0, 0, -185, 0, 0, 0, 0, -185, 0, 0, 0, -185, 0, 0, 0, -185, 0,
+        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
         // State 133
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 134
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 135
         0, 0, 0, 0, 0, 0, -81, 0, 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 136
@@ -449672,7 +477724,7 @@
         // State 137
         -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
         // State 138
-        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, -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,
+        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, -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 139
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0,
         // State 140
@@ -449692,7 +477744,7 @@
         // State 147
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 148
-        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, 0, -221, -221, -221, 0, 0, -221, 0, 0, 0, 0, -221, 0, 0, 0, -221, 0, 0, 0, -221, 0,
+        0, 0, 0, 0, 0, 0, 0, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 0, 0, -220, 0, 0, 0, 0, -220, 0, 0, 0, -220, 0, 0, 0, -220, 0,
         // State 149
         -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, -25,
         // State 150
@@ -449700,13 +477752,13 @@
         // State 151
         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, 0, -97, 0,
         // State 152
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, -188, 0, 0, -188, 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, -188, 0,
         // State 153
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
         // State 154
         0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 155
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, -202, 0, 0, 0, -202, 0, 0, -202, 0, -202, 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, -202, 0, 0, -202, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, -201, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0,
         // State 156
         0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 157
@@ -449722,13 +477774,13 @@
         // 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, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
         // State 163
-        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, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
         // State 164
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
         // State 165
         0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 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, -203, 0, 0, -203, 0, 0, 0, -203, 0, 0, 0, -203, 0, 0, -203, 0, -203, 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, -203, 0, 0, -203, 0,
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, -202, 0, 0, 0, -202, 0, 0, -202, 0, -202, 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, -202, 0, 0, -202, 0,
         // State 167
         0, 0, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, -144, -144, 0, 0, -144, 0, 0, 0, 0, -144, 0, 0, 0, -144, 0, 0, 0, -144, 0,
         // State 168
@@ -449855,7 +477907,7 @@
         // State 53
         0,
         // State 54
-        -236,
+        -235,
         // State 55
         0,
         // State 56
@@ -450175,22 +478227,22 @@
             63 => 102,
             65 => 103,
             69 => 28,
-            74 => match state {
+            72 => match state {
                 14 | 28 => 104,
                 27 => 125,
                 _ => 60,
             },
-            75 => match state {
+            73 => match state {
                 18 => 110,
                 _ => 87,
             },
-            76 => 18,
-            78 => 105,
-            79 => match state {
+            74 => 18,
+            76 => 105,
+            77 => match state {
                 28 => 130,
                 _ => 106,
             },
-            83 => match state {
+            81 => match state {
                 39 => 145,
                 47 => 159,
                 49 => 164,
@@ -450198,27 +478250,27 @@
                 53 => 172,
                 _ => 92,
             },
-            84 => match state {
+            82 => match state {
                 44 => 151,
                 _ => 141,
             },
-            86 => 61,
-            87 => 62,
-            88 => match state {
+            84 => 61,
+            85 => 62,
+            87 => match state {
                 13 => 95,
                 45 => 154,
                 48 => 160,
                 51 => 168,
                 _ => 143,
             },
-            90 => match state {
+            89 => match state {
                 26 => 121,
                 _ => 96,
             },
-            92 => 26,
-            93 => 8,
-            94 => 63,
-            95 => 107,
+            91 => 26,
+            92 => 8,
+            93 => 63,
+            94 => 107,
             _ => 0,
         }
     }
@@ -450288,25 +478340,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -450332,7 +478386,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -450356,7 +478410,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -450364,7 +478418,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -450388,22 +478442,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -450464,10 +478520,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -450488,10 +478545,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -451468,25 +479526,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -451498,14 +479556,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -451517,19 +479575,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -451541,109 +479599,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -451655,31 +479713,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -451690,68 +479748,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -451762,26 +479820,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -451793,30 +479851,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -451898,13 +479956,13 @@
                     nonterminal_produced: 108,
                 }
             }
-            234 => {
+            234 => __state_machine::SimulatedReduce::Accept,
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 110,
                 }
             }
-            235 => __state_machine::SimulatedReduce::Accept,
             236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -452049,12 +480107,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -452072,10 +480124,12 @@
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::ForStmt, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -452083,18 +480137,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -452108,7 +480164,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -452122,802 +480178,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::ForStmt,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            235 => {
                 // __ForStmt = ForStmt => ActionFn(14);
                 let __sym0 = __pop_Variant36(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action14::<>(__sym0);
+                let __nt = super::__action14::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            235 => {
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -453012,16 +481067,6 @@
             _ => __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)>
@@ -453032,13 +481077,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -453122,16 +481167,6 @@
             _ => __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)>
@@ -453152,13 +481187,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -453302,63 +481337,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -453372,13 +481407,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -453392,43 +481427,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -453442,13 +481477,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -453482,13 +481517,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -453542,13 +481577,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -453583,1281 +481618,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -454866,59 +483063,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -454927,59 +483132,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -454988,216 +483201,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -455208,44 +483449,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -455254,180 +483501,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -455437,30 +483706,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -455470,30 +483743,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -455503,62 +483780,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -455566,65 +483851,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -455633,18 +483926,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -455655,18 +483950,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -455680,18 +483977,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -455703,18 +484002,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -455727,18 +484028,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -455749,18 +484052,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -455773,18 +484078,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -455795,18 +484102,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -455818,18 +484127,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -455839,77 +484150,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -455918,18 +484239,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -455938,36 +484261,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -455977,36 +484304,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -456017,18 +484348,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -456038,20 +484371,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -456060,20 +484395,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -456081,30 +484418,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -456113,108 +484454,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -456227,15 +484582,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -456247,154 +484604,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -456403,94 +484727,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -456499,75 +484835,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -456576,15 +484922,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -456593,15 +484941,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -456610,35 +484960,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -456650,18 +485004,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -456670,65 +485026,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -456736,80 +485100,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -456819,95 +485193,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -456915,79 +485337,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -456996,15 +485428,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -457013,15 +485447,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -457030,181 +485466,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -457214,594 +485674,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -457872,24 +486410,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -457931,7 +486467,7 @@
         // State 18
         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, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 19
-        0, -170, -170, -170, -170, 31, -170, -170, -170, -170, -170, 0, 32, -170, -170, 0, 0, -170, -170, -170, -170, -170, -170, -170, 33, -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, -167, -167, -167, -167, 31, -167, -167, -167, -167, -167, 0, 32, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, 33, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
         // State 20
         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, 22, 77, 23, 0, 0, 24, 0, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 125, 0,
         // State 21
@@ -457941,7 +486477,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, 0, 77, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 24
-        135, 0, 0, 40, 0, 41, 0, 42, 0, 0, 136, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 77, 0, 0, 138, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 140,
+        135, 0, 0, 40, 0, 41, 0, 42, 0, 0, 136, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 77, 0, 0, 138, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 140,
         // State 25
         135, 0, 0, 40, 0, 41, 0, 42, 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 77, 0, 0, 138, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 140,
         // State 26
@@ -457949,9 +486485,9 @@
         // State 27
         0, 0, 0, 95, 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, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 28
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, -170, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, -167, 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,
         // State 29
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 32, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, 33, -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, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 32, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, 33, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
         // State 30
         135, 0, 0, 40, 0, 41, -80, 42, 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 77, 0, 0, 138, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 140,
         // State 31
@@ -457993,7 +486529,7 @@
         // State 49
         135, 0, 0, 40, 0, 41, -82, 42, 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 77, 0, 0, 138, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 140,
         // State 50
-        0, -170, -170, -170, -170, 31, -170, -170, -170, -170, -170, 0, 32, 0, -170, 0, 191, -170, -170, -170, 0, -170, -170, -170, 33, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        0, -167, -167, -167, -167, 31, -167, -167, -167, -167, -167, 0, 32, 0, -167, 0, 191, -167, -167, -167, 0, -167, -167, -167, 33, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 51
         135, 0, 0, 40, 0, 41, 0, 42, 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 77, 0, 0, 138, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 140,
         // State 52
@@ -458075,13 +486611,13 @@
         // 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, 0, 0, 0, 0, 0, 0,
         // State 91
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, -200, 0, 0, 0, -200, 27, 0, -200, 0, -200, 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, -200, 0, 0, -200, 0,
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, -199, 0, 0, 0, -199, 27, 0, -199, 0, -199, 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, -199, 0, 0, -199, 0,
         // State 92
         0, 0, 0, 0, 0, 0, -126, 0, 0, -126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 93
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 94
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 95
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 96
@@ -458093,9 +486629,9 @@
         // State 99
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 100
-        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 0,
         // State 101
-        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -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, -176, -176, -176, 0, 0, -176, 0, 0, 0, 0, -176, 0, 0, 0, -176, 0, 0, 0, -176, 0,
         // State 102
         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, 0,
         // State 103
@@ -458105,19 +486641,19 @@
         // State 105
         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, -158, -158, -158, 0, 0, -158, 0, 0, 0, 0, -158, 0, 0, 0, -158, 0, 0, 0, -158, 0,
         // State 106
-        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -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, -177, -177, -177, 0, 0, -177, 0, 0, 0, 0, -177, 0, 0, 0, -177, 0, 0, 0, -177, 0,
         // State 107
         0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 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, -201, 0, 0, -201, 0, 0, 0, -201, 0, 0, 0, -201, 46, 0, -201, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0,
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, -200, 0, 0, 0, -200, 46, 0, -200, 0, -200, 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, -200, 0, 0, -200, 0,
         // State 109
-        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, 0, -213, 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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 110
-        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, 0, -207, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 111
-        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, 0, -208, 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, 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, -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, 0, -209, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 114
@@ -458131,19 +486667,19 @@
         // 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, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 119
-        0, 0, 0, 0, 0, 0, 0, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
+        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
         // State 120
-        0, 0, 0, 0, 0, 0, 0, -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, -184, -184, -184, 0, 0, -184, 0, 0, 0, 0, -184, 0, 0, 0, -184, 0, 0, 0, -184, 0,
+        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
         // State 121
-        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, -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,
+        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, -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 122
-        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
+        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
         // State 123
         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, -159, -159, -159, 0, 0, -159, 0, 0, 0, 0, -159, 0, 0, 0, -159, 0, 0, 0, -159, 0,
         // State 124
         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, -78, 0, 0, -78, -78, -78, 0, 0, -78, 0, 0, 0, 0, -78, 0, 0, 0, -78, 0, 0, 0, -78, 0,
         // State 125
-        0, 0, 0, 0, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, -185, -185, 0, 0, -185, 0, 0, 0, 0, -185, 0, 0, 0, -185, 0, 0, 0, -185, 0,
+        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
         // State 126
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
         // State 127
@@ -458151,31 +486687,31 @@
         // State 128
         0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, -118, -118, 0, 0, -118, -118, -118, 0, -118, -118, -118, 0, -118, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, -118, 0,
         // State 129
-        0, -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, -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,
+        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, -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 130
-        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, -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,
+        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, -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 131
         0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, -111, -111, 0, 0, -111, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, -111, 0,
         // State 132
-        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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, -197, 0,
+        0, -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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, -194, 0,
         // State 133
-        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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, -198, 0,
+        0, -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, -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 134
-        -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, 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 135
         -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, 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 135
+        -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, 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,
         // State 136
-        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, -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 137
         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, -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 137
+        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, -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,
         // State 138
-        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, -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,
+        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, -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 139
-        -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, 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,
+        -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, 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 140
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 141
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 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,
         // State 142
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 143
@@ -458185,13 +486721,13 @@
         // State 145
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 146
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, -174, -174, 0, 0, -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, -174, 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, -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 147
         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, 0,
         // State 148
         0, 0, 0, 0, 0, 0, -79, 0, 0, 189, 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,
         // State 149
-        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, -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,
+        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, -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 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, 190, 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,
         // State 151
@@ -458247,11 +486783,11 @@
         // State 176
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 177
-        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, 0, -221, -221, -221, 0, 0, -221, 0, 0, 0, 0, -221, 0, 0, 0, -221, 0, 0, 0, -221, 0,
+        0, 0, 0, 0, 0, 0, 0, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 0, 0, -220, 0, 0, 0, 0, -220, 0, 0, 0, -220, 0, 0, 0, -220, 0,
         // State 178
         0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 179
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, -202, 0, 0, 0, -202, 0, 0, -202, 0, -202, 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, -202, 0, 0, -202, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, -201, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0,
         // State 180
         0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 181
@@ -458271,7 +486807,7 @@
         // State 188
         -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
         // State 189
-        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, -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,
+        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, -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 190
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 191
@@ -458281,7 +486817,7 @@
         // State 193
         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, -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 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, -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, -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, -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,
         // State 195
         0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, -109, 0, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, -109, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0,
         // State 196
@@ -458289,7 +486825,7 @@
         // State 197
         0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 198
-        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, -203, 0, 0, 0, -203, 0, 0, -203, 0, -203, 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, -203, 0, 0, -203, 0,
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, -202, 0, 0, 0, -202, 0, 0, -202, 0, -202, 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, -202, 0, 0, -202, 0,
         // State 199
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 200
@@ -458311,7 +486847,7 @@
         // State 208
         0, 0, 0, 0, 0, 0, 0, 0, 0, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 209
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, -188, 0, 0, -188, 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, -188, 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, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
         // State 211
@@ -458323,9 +486859,9 @@
         // 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, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
         // State 215
-        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, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 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, -189, 0,
         // State 216
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
         // State 217
         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, -130, -130, -130, 0, 0, -130, 0, 0, 0, 0, -130, 0, 0, 0, -130, 0, 0, 0, -130, 0,
         // State 218
@@ -458482,7 +487018,7 @@
         // State 71
         0,
         // State 72
-        -237,
+        -236,
         // State 73
         0,
         // State 74
@@ -458878,22 +487414,22 @@
             63 => 101,
             65 => 102,
             69 => 20,
-            74 => match state {
+            72 => match state {
                 13 | 20 => 103,
                 18 => 117,
                 _ => 130,
             },
-            75 => match state {
+            73 => match state {
                 29 => 146,
                 _ => 121,
             },
-            76 => 29,
-            78 => 104,
-            79 => match state {
+            74 => 29,
+            76 => 104,
+            77 => match state {
                 20 => 123,
                 _ => 105,
             },
-            83 => match state {
+            81 => match state {
                 40 => 174,
                 48 => 185,
                 68 => 212,
@@ -458901,13 +487437,13 @@
                 71 => 219,
                 _ => 153,
             },
-            84 => match state {
+            82 => match state {
                 66 => 208,
                 _ => 203,
             },
-            86 => 131,
-            87 => 132,
-            88 => match state {
+            84 => 131,
+            85 => 132,
+            87 => match state {
                 12 => 17,
                 27 => 47,
                 10 => 92,
@@ -458919,14 +487455,14 @@
                 64 => 206,
                 _ => 143,
             },
-            90 => match state {
+            89 => match state {
                 14 => 109,
                 _ => 93,
             },
-            92 => 14,
-            93 => 38,
-            94 => 133,
-            95 => 106,
+            91 => 14,
+            92 => 38,
+            93 => 133,
+            94 => 106,
             _ => 0,
         }
     }
@@ -458996,25 +487532,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -459040,7 +487578,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -459064,7 +487602,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -459072,7 +487610,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -459096,22 +487634,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -459172,10 +487712,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -459196,10 +487737,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -460176,25 +488718,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -460206,14 +488748,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -460225,19 +488767,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -460249,109 +488791,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -460363,31 +488905,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -460398,68 +488940,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -460470,26 +489012,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -460501,30 +489043,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -460612,13 +489154,13 @@
                     nonterminal_produced: 109,
                 }
             }
-            235 => {
+            235 => __state_machine::SimulatedReduce::Accept,
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 110,
+                    nonterminal_produced: 111,
                 }
             }
-            236 => __state_machine::SimulatedReduce::Accept,
             237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -460757,12 +489299,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -460780,10 +489316,12 @@
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::Function, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -460791,18 +489329,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -460816,7 +489356,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -460830,802 +489370,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::Function,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            236 => {
                 // __Function = Function => ActionFn(32);
                 let __sym0 = __pop_Variant37(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action32::<>(__sym0);
+                let __nt = super::__action32::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            236 => {
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -461720,16 +490259,6 @@
             _ => __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)>
@@ -461740,13 +490269,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -461830,16 +490359,6 @@
             _ => __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)>
@@ -461860,13 +490379,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -462010,63 +490529,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -462080,13 +490599,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -462100,43 +490619,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -462150,13 +490669,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -462190,13 +490709,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -462250,13 +490769,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -462291,1281 +490810,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -463574,59 +492255,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -463635,59 +492324,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -463696,216 +492393,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -463916,44 +492641,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -463962,180 +492693,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -464145,30 +492898,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -464178,30 +492935,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -464211,62 +492972,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -464274,65 +493043,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -464341,18 +493118,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -464363,18 +493142,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -464388,18 +493169,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -464411,18 +493194,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -464435,18 +493220,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -464457,18 +493244,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -464481,18 +493270,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -464503,18 +493294,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -464526,18 +493319,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -464547,77 +493342,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -464626,18 +493431,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -464646,36 +493453,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -464685,36 +493496,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -464725,18 +493540,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -464746,20 +493563,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -464768,20 +493587,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -464789,30 +493610,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -464821,108 +493646,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -464935,15 +493774,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -464955,154 +493796,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -465111,94 +493919,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -465207,75 +494027,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -465284,15 +494114,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -465301,15 +494133,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -465318,35 +494152,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -465358,18 +494196,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -465378,65 +494218,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -465444,80 +494292,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -465527,95 +494385,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -465623,79 +494529,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -465704,15 +494620,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -465721,15 +494639,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -465738,181 +494658,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -465922,594 +494866,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -466580,24 +495602,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -466614,7 +495634,7 @@
         // State 0
         0,
         // State 1
-        -238,
+        -237,
         // State 2
         -139,
     ];
@@ -466690,25 +495710,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -466734,7 +495756,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -466758,7 +495780,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -466766,7 +495788,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -466790,22 +495812,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -466866,10 +495890,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -466890,10 +495915,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -467870,25 +496896,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -467900,14 +496926,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -467919,19 +496945,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -467943,109 +496969,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -468057,31 +497083,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -468092,68 +497118,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -468164,26 +497190,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -468195,30 +497221,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -468312,13 +497338,13 @@
                     nonterminal_produced: 110,
                 }
             }
-            236 => {
+            236 => __state_machine::SimulatedReduce::Accept,
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 111,
+                    nonterminal_produced: 112,
                 }
             }
-            237 => __state_machine::SimulatedReduce::Accept,
             238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -468451,12 +497477,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -468474,10 +497494,12 @@
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::Ident, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -468485,18 +497507,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -468510,7 +497534,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -468524,802 +497548,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::Ident,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            237 => {
                 // __Ident = Ident => ActionFn(0);
                 let __sym0 = __pop_Variant18(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action0::<>(__sym0);
+                let __nt = super::__action0::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            237 => {
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -469414,16 +498437,6 @@
             _ => __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)>
@@ -469434,13 +498447,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -469524,16 +498537,6 @@
             _ => __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)>
@@ -469554,13 +498557,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -469704,63 +498707,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -469774,13 +498777,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -469794,43 +498797,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -469844,13 +498847,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -469884,13 +498887,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -469944,13 +498947,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -469985,1281 +498988,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -471268,59 +500433,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -471329,59 +500502,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -471390,216 +500571,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -471610,44 +500819,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -471656,180 +500871,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -471839,30 +501076,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -471872,30 +501113,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -471905,62 +501150,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -471968,65 +501221,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -472035,18 +501296,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -472057,18 +501320,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -472082,18 +501347,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -472105,18 +501372,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -472129,18 +501398,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -472151,18 +501422,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -472175,18 +501448,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -472197,18 +501472,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -472220,18 +501497,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -472241,77 +501520,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -472320,18 +501609,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -472340,36 +501631,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -472379,36 +501674,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -472419,18 +501718,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -472440,20 +501741,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -472462,20 +501765,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -472483,30 +501788,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -472515,108 +501824,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -472629,15 +501952,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -472649,154 +501974,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -472805,94 +502097,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -472901,75 +502205,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -472978,15 +502292,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -472995,15 +502311,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -473012,35 +502330,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -473052,18 +502374,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -473072,65 +502396,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -473138,80 +502470,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -473221,95 +502563,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -473317,79 +502707,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -473398,15 +502798,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -473415,15 +502817,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -473432,181 +502836,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -473616,594 +503044,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -474274,24 +503780,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -474317,13 +503821,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, 0,
         // State 11
-        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, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 12
         0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 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,
         // State 13
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 14
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 0, -205, 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, 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
@@ -474333,25 +503837,25 @@
         // State 18
         0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 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, -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, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 6, 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,
         // State 20
-        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, 0, -213, 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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 21
-        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, 0, -207, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 22
-        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, 0, -208, 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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 23
-        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, 0, -209, 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, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 24
         0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 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, 0,
         // State 26
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // 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, 0,
         // State 28
-        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, 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, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -474372,7 +503876,7 @@
         // State 6
         -142,
         // State 7
-        -239,
+        -238,
         // State 8
         -139,
         // State 9
@@ -474430,15 +503934,15 @@
                 _ => 11,
             },
             62 => 7,
-            88 => match state {
+            87 => match state {
                 2 => 16,
                 _ => 12,
             },
-            90 => match state {
+            89 => match state {
                 3 => 20,
                 _ => 13,
             },
-            92 => 3,
+            91 => 3,
             _ => 0,
         }
     }
@@ -474508,25 +504012,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -474552,7 +504058,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -474576,7 +504082,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -474584,7 +504090,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -474608,22 +504114,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -474684,10 +504192,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -474708,10 +504217,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -475688,25 +505198,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -475718,14 +505228,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -475737,19 +505247,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -475761,109 +505271,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -475875,31 +505385,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -475910,68 +505420,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -475982,26 +505492,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -476013,30 +505523,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -476136,13 +505646,13 @@
                     nonterminal_produced: 111,
                 }
             }
-            237 => {
+            237 => __state_machine::SimulatedReduce::Accept,
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 112,
+                    nonterminal_produced: 113,
                 }
             }
-            238 => __state_machine::SimulatedReduce::Accept,
             239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -476269,12 +505779,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -476292,10 +505796,12 @@
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::Type, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -476303,18 +505809,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -476328,7 +505836,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -476342,802 +505850,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::Type,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            238 => {
                 // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
                 let __sym0 = __pop_Variant6(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action3::<>(__sym0);
+                let __nt = super::__action3::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            238 => {
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -477232,16 +506739,6 @@
             _ => __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)>
@@ -477252,13 +506749,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -477342,16 +506839,6 @@
             _ => __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)>
@@ -477372,13 +506859,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -477522,63 +507009,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -477592,13 +507079,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -477612,43 +507099,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -477662,13 +507149,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -477702,13 +507189,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -477762,13 +507249,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -477803,1281 +507290,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -479086,59 +508735,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -479147,59 +508804,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -479208,216 +508873,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -479428,44 +509121,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -479474,180 +509173,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -479657,30 +509378,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -479690,30 +509415,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -479723,62 +509452,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -479786,65 +509523,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -479853,18 +509598,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -479875,18 +509622,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -479900,18 +509649,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -479923,18 +509674,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -479947,18 +509700,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -479969,18 +509724,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -479993,18 +509750,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -480015,18 +509774,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -480038,18 +509799,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -480059,77 +509822,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -480138,18 +509911,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -480158,36 +509933,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -480197,36 +509976,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -480237,18 +510020,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -480258,20 +510043,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -480280,20 +510067,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -480301,30 +510090,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -480333,108 +510126,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -480447,15 +510254,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -480467,154 +510276,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -480623,94 +510399,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -480719,75 +510507,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -480796,15 +510594,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -480813,15 +510613,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -480830,35 +510632,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -480870,18 +510676,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -480890,65 +510698,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -480956,80 +510772,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -481039,95 +510865,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -481135,79 +511009,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -481216,15 +511100,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -481233,15 +511119,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -481250,181 +511138,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -481434,594 +511346,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -482092,24 +512082,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -482125,7 +512113,7 @@
         // State 5
         0, 0, 0, 82, 0, 0, -110, 0, 83, -110, 84, 0, 0, -110, 0, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, 85, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 86, 0, -110, 0,
         // State 6
-        0, -170, -170, -170, -170, 18, -170, -170, -170, -170, -170, 0, 19, -170, -170, 0, 0, -170, -170, -170, -170, -170, -170, -170, 20, -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, -167, -167, -167, -167, 18, -167, -167, -167, -167, -167, 0, 19, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, 20, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
         // State 7
         63, 0, 0, 9, 0, 21, 0, 11, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 66, 0, 0, 67, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 69,
         // State 8
@@ -482145,7 +512133,7 @@
         // State 15
         63, 0, 0, 9, 0, 21, 0, 11, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 66, 0, 0, 67, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 69,
         // State 16
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 19, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, 20, -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, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 19, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, 20, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
         // State 17
         63, 0, 0, 9, 0, 10, -80, 11, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 66, 0, 0, 67, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 69,
         // State 18
@@ -482157,7 +512145,7 @@
         // State 21
         63, 0, 0, 9, 0, 21, 0, 11, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 66, 0, 0, 67, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 69,
         // State 22
-        0, -170, -170, -170, -170, 18, -170, -170, -170, -170, -170, 0, 19, 0, -170, 0, 117, -170, -170, -170, 0, -170, -170, -170, 20, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        0, -167, -167, -167, -167, 18, -167, -167, -167, -167, -167, 0, 19, 0, -167, 0, 117, -167, -167, -167, 0, -167, -167, -167, 20, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
         // State 24
@@ -482171,7 +512159,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, 0, 66, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 29
-        63, 0, 0, 9, 0, 10, 0, 11, 0, 0, 64, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 66, 0, 0, 67, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 69,
+        63, 0, 0, 9, 0, 10, 0, 11, 0, 0, 64, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 66, 0, 0, 67, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 69,
         // State 30
         63, 0, 0, 9, 0, 10, 0, 11, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 66, 0, 0, 67, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 69,
         // State 31
@@ -482185,7 +512173,7 @@
         // State 35
         0, 0, 0, 97, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 36
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, -170, 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, 19, 0, 0, 0, 0, 0, 0, 0, -167, 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,
         // State 37
         63, 0, 0, 9, 0, 10, 0, 11, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 66, 0, 0, 67, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 69,
         // State 38
@@ -482227,29 +512215,29 @@
         // State 56
         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, -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 57
-        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, -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,
+        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, -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 58
-        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, -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,
+        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, -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 59
         0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, -111, -111, 0, 0, -111, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, -111, 0,
         // State 60
-        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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, -197, 0,
+        0, -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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, -194, 0,
         // State 61
-        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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, -198, 0,
+        0, -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, -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 62
-        -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, 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 63
         -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, 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 63
+        -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, 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,
         // State 64
-        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, -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,
+        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, -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 65
         0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 0,
         // State 66
-        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, -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, -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, -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,
         // State 67
-        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, -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,
+        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, -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 68
-        -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, 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,
+        -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, 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 69
         0, 0, 0, 0, 0, 0, 0, -145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, -145, -145, -145, 0, 0, -145, 0, 0, 0, 0, -145, 0, 0, 0, -145, 0, 0, 0, -145, 0,
         // State 70
@@ -482285,7 +512273,7 @@
         // State 85
         -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, 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 86
-        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, -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,
+        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, -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 87
         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, -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 88
@@ -482299,13 +512287,13 @@
         // State 92
         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, -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 93
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, -200, 0, 0, 0, -200, 36, 0, -200, 0, -200, 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, -200, 0, 0, -200, 0,
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, -199, 0, 0, 0, -199, 36, 0, -199, 0, -199, 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, -199, 0, 0, -199, 0,
         // State 94
         0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, -108, 0, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, -108, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0,
         // State 95
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 96
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 97
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 98
@@ -482313,9 +512301,9 @@
         // State 99
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 100
-        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 0,
         // State 101
-        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -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, -176, -176, -176, 0, 0, -176, 0, 0, 0, 0, -176, 0, 0, 0, -176, 0, 0, 0, -176, 0,
         // State 102
         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, 0,
         // State 103
@@ -482325,25 +512313,25 @@
         // State 105
         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, -158, -158, -158, 0, 0, -158, 0, 0, 0, 0, -158, 0, 0, 0, -158, 0, 0, 0, -158, 0,
         // State 106
-        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -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, -177, -177, -177, 0, 0, -177, 0, 0, 0, 0, -177, 0, 0, 0, -177, 0, 0, 0, -177, 0,
         // State 107
         0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 108
         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, -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 109
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, -174, -174, 0, 0, -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, -174, 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, -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 110
         0, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 111
         0, 0, 0, 0, 0, 0, -79, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 112
-        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, -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,
+        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, -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 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, 139, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 114
         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, -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 115
-        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, -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, -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, -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,
         // State 116
         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, 0,
         // State 117
@@ -482351,37 +512339,37 @@
         // State 118
         0, 0, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, -144, -144, 0, 0, -144, 0, 0, 0, 0, -144, 0, 0, 0, -144, 0, 0, 0, -144, 0,
         // State 119
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, -201, 0, 0, 0, -201, 44, 0, -201, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0,
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, -200, 0, 0, 0, -200, 44, 0, -200, 0, -200, 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, -200, 0, 0, -200, 0,
         // State 120
-        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, 0, -213, 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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 121
-        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, 0, -207, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 122
-        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, 0, -208, 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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 123
-        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, 0, -209, 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, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 124
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 125
         0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 126
-        0, 0, 0, 0, 0, 0, 0, -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, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
+        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
         // State 127
-        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, -184, -184, -184, 0, 0, -184, 0, 0, 0, 0, -184, 0, 0, 0, -184, 0, 0, 0, -184, 0,
+        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
         // State 128
-        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
+        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
         // State 129
         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, -159, -159, -159, 0, 0, -159, 0, 0, 0, 0, -159, 0, 0, 0, -159, 0, 0, 0, -159, 0,
         // State 130
         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, -78, 0, 0, -78, -78, -78, 0, 0, -78, 0, 0, 0, 0, -78, 0, 0, 0, -78, 0, 0, 0, -78, 0,
         // State 131
-        0, 0, 0, 0, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, -185, -185, 0, 0, -185, 0, 0, 0, 0, -185, 0, 0, 0, -185, 0, 0, 0, -185, 0,
+        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
         // State 132
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 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, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 134
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 135
         0, 0, 0, 0, 0, 0, -81, 0, 0, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 136
@@ -482389,7 +512377,7 @@
         // State 137
         -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
         // State 138
-        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, -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,
+        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, -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 139
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 0,
         // State 140
@@ -482407,7 +512395,7 @@
         // State 146
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 147
-        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, 0, -221, -221, -221, 0, 0, -221, 0, 0, 0, 0, -221, 0, 0, 0, -221, 0, 0, 0, -221, 0,
+        0, 0, 0, 0, 0, 0, 0, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 0, 0, -220, 0, 0, 0, 0, -220, 0, 0, 0, -220, 0, 0, 0, -220, 0,
         // State 148
         -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, -25,
         // State 149
@@ -482415,13 +512403,13 @@
         // State 150
         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, 0, -97, 0,
         // State 151
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, -188, 0, 0, -188, 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, -188, 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, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
         // State 153
         0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 154
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, -202, 0, 0, 0, -202, 0, 0, -202, 0, -202, 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, -202, 0, 0, -202, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, -201, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0,
         // State 155
         0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 156
@@ -482437,13 +512425,13 @@
         // 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, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
         // State 162
-        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, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
         // State 163
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
         // State 164
         0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 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, -203, 0, 0, -203, 0, 0, 0, -203, 0, 0, 0, -203, 0, 0, -203, 0, -203, 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, -203, 0, 0, -203, 0,
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, -202, 0, 0, 0, -202, 0, 0, -202, 0, -202, 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, -202, 0, 0, -202, 0,
         // State 166
         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, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
         // State 167
@@ -482572,7 +512560,7 @@
         // State 53
         0,
         // State 54
-        -240,
+        -239,
         // State 55
         0,
         // State 56
@@ -482892,22 +512880,22 @@
             },
             65 => 102,
             69 => 26,
-            74 => match state {
+            72 => match state {
                 12 | 26 => 103,
                 25 => 124,
                 _ => 58,
             },
-            75 => match state {
+            73 => match state {
                 16 => 109,
                 _ => 86,
             },
-            76 => 16,
-            78 => 104,
-            79 => match state {
+            74 => 16,
+            76 => 104,
+            77 => match state {
                 26 => 129,
                 _ => 105,
             },
-            83 => match state {
+            81 => match state {
                 37 => 145,
                 44 => 158,
                 47 => 163,
@@ -482915,27 +512903,27 @@
                 53 => 172,
                 _ => 91,
             },
-            84 => match state {
+            82 => match state {
                 41 => 150,
                 _ => 141,
             },
-            86 => 59,
-            87 => 60,
-            88 => match state {
+            84 => 59,
+            85 => 60,
+            87 => match state {
                 11 => 94,
                 42 => 153,
                 46 => 159,
                 49 => 167,
                 _ => 143,
             },
-            90 => match state {
+            89 => match state {
                 24 => 120,
                 _ => 95,
             },
-            92 => 24,
-            93 => 7,
-            94 => 61,
-            95 => 106,
+            91 => 24,
+            92 => 7,
+            93 => 61,
+            94 => 106,
             _ => 0,
         }
     }
@@ -483005,25 +512993,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -483049,7 +513039,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -483073,7 +513063,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -483081,7 +513071,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -483105,22 +513095,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -483181,10 +513173,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -483205,10 +513198,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -484185,25 +514179,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -484215,14 +514209,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -484234,19 +514228,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -484258,109 +514252,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -484372,31 +514366,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -484407,68 +514401,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -484479,26 +514473,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -484510,30 +514504,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -484639,13 +514633,13 @@
                     nonterminal_produced: 112,
                 }
             }
-            238 => {
+            238 => __state_machine::SimulatedReduce::Accept,
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 113,
+                    nonterminal_produced: 114,
                 }
             }
-            239 => __state_machine::SimulatedReduce::Accept,
             240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -484766,12 +514760,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -484789,10 +514777,12 @@
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::IfStmt, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -484800,18 +514790,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -484825,7 +514817,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -484839,802 +514831,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::IfStmt,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            239 => {
                 // __IfStmt = IfStmt => ActionFn(15);
                 let __sym0 = __pop_Variant39(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action15::<>(__sym0);
+                let __nt = super::__action15::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            239 => {
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -485729,16 +515720,6 @@
             _ => __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)>
@@ -485749,13 +515730,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -485839,16 +515820,6 @@
             _ => __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)>
@@ -485869,13 +515840,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -486019,63 +515990,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -486089,13 +516060,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -486109,43 +516080,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -486159,13 +516130,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -486199,13 +516170,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -486259,13 +516230,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -486300,1281 +516271,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -487583,59 +517716,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -487644,59 +517785,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -487705,216 +517854,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -487925,44 +518102,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -487971,180 +518154,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -488154,30 +518359,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -488187,30 +518396,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -488220,62 +518433,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -488283,65 +518504,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -488350,18 +518579,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -488372,18 +518603,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -488397,18 +518630,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -488420,18 +518655,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -488444,18 +518681,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -488466,18 +518705,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -488490,18 +518731,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -488512,18 +518755,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -488535,18 +518780,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -488556,77 +518803,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -488635,18 +518892,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -488655,36 +518914,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -488694,36 +518957,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -488734,18 +519001,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -488755,20 +519024,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -488777,20 +519048,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -488798,30 +519071,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -488830,108 +519107,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -488944,15 +519235,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -488964,154 +519257,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -489120,94 +519380,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -489216,75 +519488,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -489293,15 +519575,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -489310,15 +519594,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -489327,35 +519613,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -489367,18 +519657,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -489387,65 +519679,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -489453,80 +519753,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -489536,95 +519846,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -489632,79 +519990,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -489713,15 +520081,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -489730,15 +520100,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -489747,181 +520119,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -489931,594 +520327,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -490589,24 +521063,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -490665,7 +521137,7 @@
         // State 4
         0,
         // State 5
-        -241,
+        -240,
         // State 6
         0,
         // State 7
@@ -490777,25 +521249,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -490821,7 +521295,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -490845,7 +521319,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -490853,7 +521327,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -490877,22 +521351,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -490953,10 +521429,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -490977,10 +521454,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -491957,25 +522435,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -491987,14 +522465,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -492006,19 +522484,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -492030,109 +522508,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -492144,31 +522622,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -492179,68 +522657,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -492251,26 +522729,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -492282,30 +522760,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -492417,13 +522895,13 @@
                     nonterminal_produced: 113,
                 }
             }
-            239 => {
+            239 => __state_machine::SimulatedReduce::Accept,
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 114,
+                    nonterminal_produced: 115,
                 }
             }
-            240 => __state_machine::SimulatedReduce::Accept,
             241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -492538,12 +523016,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -492561,10 +523033,12 @@
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::Import, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -492572,18 +523046,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -492597,7 +523073,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -492611,802 +523087,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::Import,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            240 => {
                 // __Import = Import => ActionFn(36);
                 let __sym0 = __pop_Variant40(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action36::<>(__sym0);
+                let __nt = super::__action36::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            240 => {
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -493501,16 +523976,6 @@
             _ => __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)>
@@ -493521,13 +523986,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -493611,16 +524076,6 @@
             _ => __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)>
@@ -493641,13 +524096,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -493791,63 +524246,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -493861,13 +524316,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -493881,43 +524336,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -493931,13 +524386,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -493971,13 +524426,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -494031,13 +524486,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -494072,1281 +524527,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -495355,59 +525972,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -495416,59 +526041,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -495477,216 +526110,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -495697,44 +526358,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -495743,180 +526410,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -495926,30 +526615,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -495959,30 +526652,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -495992,62 +526689,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -496055,65 +526760,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -496122,18 +526835,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -496144,18 +526859,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -496169,18 +526886,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -496192,18 +526911,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -496216,18 +526937,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -496238,18 +526961,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -496262,18 +526987,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -496284,18 +527011,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -496307,18 +527036,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -496328,77 +527059,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -496407,18 +527148,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -496427,36 +527170,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -496466,36 +527213,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -496506,18 +527257,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -496527,20 +527280,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -496549,20 +527304,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -496570,30 +527327,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -496602,108 +527363,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -496716,15 +527491,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -496736,154 +527513,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -496892,94 +527636,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -496988,75 +527744,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -497065,15 +527831,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -497082,15 +527850,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -497099,35 +527869,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -497139,18 +527913,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -497159,65 +527935,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -497225,80 +528009,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -497308,95 +528102,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -497404,79 +528246,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -497485,15 +528337,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -497502,15 +528356,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -497519,181 +528375,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -497703,594 +528583,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -498361,24 +529319,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -498406,7 +529362,7 @@
         // State 11
         0, 0, 0, 85, 0, 0, -110, 0, 86, -110, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 88, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, -110, 0,
         // State 12
-        0, -170, -170, -170, -170, 25, -170, -170, -170, -170, -170, 0, 26, 0, -170, 0, 91, 0, -170, -170, 0, -170, -170, -170, 27, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        0, -167, -167, -167, -167, 25, -167, -167, -167, -167, -167, 0, 26, 0, -167, 0, 91, 0, -167, -167, 0, -167, -167, -167, 27, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 13
         65, 0, 0, 15, 0, 30, 0, 17, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 40, 0, 0, 68, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 70,
         // State 14
@@ -498428,7 +529384,7 @@
         // State 22
         65, 0, 0, 15, 0, 30, 0, 17, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 40, 0, 0, 68, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 70,
         // State 23
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 26, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 27, -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, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 26, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 27, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 24
         65, 0, 0, 15, 0, 16, -80, 17, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 40, 0, 0, 68, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 70,
         // State 25
@@ -498438,7 +529394,7 @@
         // State 27
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
         // State 28
-        0, -170, -170, -170, -170, 25, -170, -170, -170, -170, -170, 0, 26, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, 27, -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, -167, -167, -167, -167, 25, -167, -167, -167, -167, -167, 0, 26, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, 27, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 29
         65, 0, 0, 15, 0, 16, 0, 17, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 40, 0, 0, 68, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 70,
         // State 30
@@ -498464,25 +529420,25 @@
         // State 40
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 41
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, -200, 0, -200, 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, -200, 0,
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, -199, 0, -199, 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, -199, 0,
         // State 42
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 43
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 44
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 45
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 46
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, -201, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, -200, 0, -200, 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, -200, 0,
         // State 47
-        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, 0, -213, 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, 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, -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, 0, -207, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 49
-        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, 0, -208, 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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 50
-        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, 0, -209, 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, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 51
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
         // State 52
@@ -498496,35 +529452,35 @@
         // State 56
         0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, -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 57
-        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, -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,
+        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, -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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0,
         // State 59
-        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, -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,
+        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, -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
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 61
         0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
         // State 62
-        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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, -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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
         // State 63
-        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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        0, -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, -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 64
-        -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, 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 65
         -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, 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 65
+        -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, 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,
         // State 66
-        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, -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 67
         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, -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 67
+        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, -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,
         // State 68
-        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, -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,
+        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, -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 69
-        -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, 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,
+        -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, 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
         0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 71
-        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, -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, -202, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, -201, 0, 0, -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, -201, 0,
         // State 72
         0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 73
@@ -498560,7 +529516,7 @@
         // State 88
         -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, 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 89
-        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, -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,
+        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, -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 90
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 91
@@ -498586,13 +529542,13 @@
         // State 101
         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, -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 102
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, 0, -174, 0, 0, 0, -174, -174, 0, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, 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, -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 103
         0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -79, 0, 0, 117, 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,
         // State 105
-        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, -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,
+        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, -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 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, 119, 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,
         // State 107
@@ -498604,11 +529560,11 @@
         // State 110
         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, -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 111
-        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, -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, -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, -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,
         // State 112
         0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 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, -109, 0,
         // State 113
-        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, -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, -203, 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, -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, -202, 0,
         // State 114
         0, 0, 0, 0, 0, 0, -81, 0, 0, 123, 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,
         // State 115
@@ -498618,11 +529574,11 @@
         // State 117
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 118
-        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, -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,
+        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, -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 119
         0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 120
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, -188, 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, -188, 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, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
         // State 122
@@ -498632,9 +529588,9 @@
         // State 124
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
         // State 125
-        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, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 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, -189, 0,
         // State 126
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -498665,7 +529621,7 @@
         // State 11
         -110,
         // State 12
-        -170,
+        -167,
         // State 13
         0,
         // State 14
@@ -498687,7 +529643,7 @@
         // State 22
         0,
         // State 23
-        -169,
+        -166,
         // State 24
         0,
         // State 25
@@ -498697,7 +529653,7 @@
         // State 27
         0,
         // State 28
-        -170,
+        -167,
         // State 29
         0,
         // State 30
@@ -498715,7 +529671,7 @@
         // State 36
         0,
         // State 37
-        -242,
+        -241,
         // State 38
         0,
         // State 39
@@ -498723,7 +529679,7 @@
         // State 40
         0,
         // State 41
-        -200,
+        -199,
         // State 42
         0,
         // State 43
@@ -498733,7 +529689,7 @@
         // State 45
         0,
         // State 46
-        -201,
+        -200,
         // State 47
         0,
         // State 48
@@ -498755,35 +529711,35 @@
         // State 56
         -118,
         // State 57
-        -199,
+        -196,
         // State 58
         0,
         // State 59
-        -220,
+        -219,
         // State 60
         -151,
         // State 61
         -111,
         // State 62
-        -197,
+        -194,
         // State 63
-        -198,
+        -195,
         // State 64
         0,
         // State 65
         0,
         // State 66
-        -218,
-        // State 67
         -217,
+        // State 67
+        -216,
         // State 68
-        -219,
+        -218,
         // State 69
         0,
         // State 70
         0,
         // State 71
-        -202,
+        -201,
         // State 72
         0,
         // State 73
@@ -498819,7 +529775,7 @@
         // State 88
         0,
         // State 89
-        -173,
+        -170,
         // State 90
         0,
         // State 91
@@ -498845,13 +529801,13 @@
         // State 101
         -117,
         // State 102
-        -174,
+        -171,
         // State 103
         0,
         // State 104
         0,
         // State 105
-        -171,
+        -168,
         // State 106
         0,
         // State 107
@@ -498863,11 +529819,11 @@
         // State 110
         -112,
         // State 111
-        -196,
+        -193,
         // State 112
         -109,
         // State 113
-        -203,
+        -202,
         // State 114
         0,
         // State 115
@@ -498877,11 +529833,11 @@
         // State 117
         0,
         // State 118
-        -172,
+        -169,
         // State 119
         0,
         // State 120
-        -191,
+        -188,
         // State 121
         0,
         // State 122
@@ -498950,38 +529906,38 @@
             },
             62 => 58,
             65 => 37,
-            74 => 59,
-            75 => match state {
+            72 => 59,
+            73 => match state {
                 23 => 102,
                 _ => 89,
             },
-            76 => 23,
-            83 => match state {
+            74 => 23,
+            81 => match state {
                 15 => 94,
                 18 => 98,
                 36 => 126,
                 _ => 60,
             },
-            84 => match state {
+            82 => match state {
                 35 => 119,
                 _ => 109,
             },
-            86 => 61,
-            87 => 62,
-            88 => match state {
+            84 => 61,
+            85 => 62,
+            87 => match state {
                 3 => 42,
                 5 => 51,
                 8 => 70,
                 19 => 100,
                 _ => 53,
             },
-            90 => match state {
+            89 => match state {
                 4 => 47,
                 _ => 43,
             },
-            92 => 4,
-            93 => 13,
-            94 => 63,
+            91 => 4,
+            92 => 13,
+            93 => 63,
             _ => 0,
         }
     }
@@ -499051,25 +530007,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -499095,7 +530053,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -499119,7 +530077,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -499127,7 +530085,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -499151,22 +530109,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -499227,10 +530187,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -499251,10 +530212,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -500231,25 +531193,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -500261,14 +531223,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -500280,19 +531242,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -500304,109 +531266,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -500418,31 +531380,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -500453,68 +531415,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -500525,26 +531487,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -500556,30 +531518,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -500697,13 +531659,13 @@
                     nonterminal_produced: 114,
                 }
             }
-            240 => {
+            240 => __state_machine::SimulatedReduce::Accept,
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 115,
+                    nonterminal_produced: 116,
                 }
             }
-            241 => __state_machine::SimulatedReduce::Accept,
             242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -500812,12 +531774,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -500835,10 +531791,12 @@
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::LetStmt, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -500846,18 +531804,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -500871,7 +531831,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -500885,802 +531845,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::LetStmt,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            241 => {
                 // __LetStmt = LetStmt => ActionFn(10);
                 let __sym0 = __pop_Variant41(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action10::<>(__sym0);
+                let __nt = super::__action10::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            241 => {
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -501775,16 +532734,6 @@
             _ => __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)>
@@ -501795,13 +532744,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -501885,16 +532834,6 @@
             _ => __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)>
@@ -501915,13 +532854,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -502065,63 +533004,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -502135,13 +533074,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -502155,43 +533094,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -502205,13 +533144,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -502245,13 +533184,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -502305,13 +533244,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -502346,1281 +533285,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -503629,59 +534730,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -503690,59 +534799,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -503751,216 +534868,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -503971,44 +535116,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -504017,180 +535168,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -504200,30 +535373,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -504233,30 +535410,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -504266,62 +535447,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -504329,65 +535518,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -504396,18 +535593,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -504418,18 +535617,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -504443,18 +535644,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -504466,18 +535669,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -504490,18 +535695,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -504512,18 +535719,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -504536,18 +535745,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -504558,18 +535769,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -504581,18 +535794,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -504602,77 +535817,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -504681,18 +535906,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -504701,36 +535928,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -504740,36 +535971,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -504780,18 +536015,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -504801,20 +536038,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -504823,20 +536062,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -504844,30 +536085,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -504876,108 +536121,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -504990,15 +536249,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -505010,154 +536271,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -505166,94 +536394,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -505262,75 +536502,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -505339,15 +536589,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -505356,15 +536608,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -505373,35 +536627,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -505413,18 +536671,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -505433,65 +536693,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -505499,80 +536767,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -505582,95 +536860,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -505678,79 +537004,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -505759,15 +537095,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -505776,15 +537114,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -505793,181 +537133,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -505977,594 +537341,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -506635,24 +538077,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -506726,7 +538166,7 @@
         // State 34
         0, 0, 0, 190, 0, 0, -110, 0, 191, -110, 192, 0, 0, -110, 0, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, 193, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 194, 0, -110, 0,
         // State 35
-        0, -170, -170, -170, -170, 51, -170, -170, -170, -170, -170, 0, 52, -170, -170, 0, 0, -170, -170, -170, -170, -170, -170, -170, 53, -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, -167, -167, -167, -167, 51, -167, -167, -167, -167, -167, 0, 52, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, 53, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
         // State 36
         161, 0, 0, 38, 0, 54, 0, 40, 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 0, 0, 0, 0, 0, 93, 0, 0, 164, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 166,
         // State 37
@@ -506754,7 +538194,7 @@
         // State 48
         161, 0, 0, 38, 0, 54, 0, 40, 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 0, 0, 0, 0, 0, 93, 0, 0, 164, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 166,
         // State 49
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 52, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, 53, -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, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 52, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, 53, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
         // State 50
         161, 0, 0, 38, 0, 39, -80, 40, 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 0, 0, 0, 0, 0, 93, 0, 0, 164, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 166,
         // State 51
@@ -506766,7 +538206,7 @@
         // State 54
         161, 0, 0, 38, 0, 54, 0, 40, 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 0, 0, 0, 0, 0, 93, 0, 0, 164, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 166,
         // State 55
-        0, -170, -170, -170, -170, 51, -170, -170, -170, -170, -170, 0, 52, 0, -170, 0, 226, -170, -170, -170, 0, -170, -170, -170, 53, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        0, -167, -167, -167, -167, 51, -167, -167, -167, -167, -167, 0, 52, 0, -167, 0, 226, -167, -167, -167, 0, -167, -167, -167, 53, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 56
         0, 0, 0, 120, 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, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 57
@@ -506782,7 +538222,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, 0, 93, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 63
-        161, 0, 0, 38, 0, 39, 0, 40, 0, 0, 162, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 0, 0, 0, 0, 0, 93, 0, 0, 164, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 166,
+        161, 0, 0, 38, 0, 39, 0, 40, 0, 0, 162, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 0, 0, 0, 0, 0, 93, 0, 0, 164, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 166,
         // State 64
         161, 0, 0, 38, 0, 39, 0, 40, 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 0, 0, 0, 0, 0, 93, 0, 0, 164, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 166,
         // State 65
@@ -506796,7 +538236,7 @@
         // State 69
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
         // State 70
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, -170, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, -167, 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,
         // State 71
         161, 0, 0, 38, 0, 39, 0, 40, 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 0, 0, 0, 0, 0, 93, 0, 0, 164, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 166,
         // State 72
@@ -506842,17 +538282,17 @@
         // State 92
         0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 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, -165, 0, -165, -165, 0, 0, 0, 0, 0, 0, 0, -165, 0, -165, 0, 0, -165, 0, 0, 0, 0, 0, -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, -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 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, -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, 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 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, -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 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, -167, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, -167, 0, -167, 0, 0, -167, 0, 0, 0, 0, 0, -167, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 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, -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 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, -166, 0, -166, -166, 0, 0, 0, 0, 0, 0, 0, -166, 0, -166, 0, 0, -166, 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, -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 99
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 100
@@ -506888,13 +538328,13 @@
         // State 115
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -39, 0, 0, 0, 0,
         // State 116
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, -200, 0, 0, 0, -200, 27, 0, -200, 0, -200, 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, -200, 0, 0, -200, 0,
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, -199, 0, 0, 0, -199, 27, 0, -199, 0, -199, 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, -199, 0, 0, -199, 0,
         // State 117
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 118
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 119
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 120
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 121
@@ -506922,15 +538362,15 @@
         // State 132
         0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -87, 0,
         // State 133
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, -201, 0, 0, 0, -201, 41, 0, -201, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0,
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, -200, 0, 0, 0, -200, 41, 0, -200, 0, -200, 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, -200, 0, 0, -200, 0,
         // State 134
-        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, 0, -213, 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, 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, -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, 0, -207, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 136
-        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, 0, -208, 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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 137
-        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, 0, -209, 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, 0, -208, 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, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 139
@@ -506948,7 +538388,7 @@
         // State 145
         0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -93, 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, -187, 0, -187, -187, 0, 0, 0, 0, 0, 0, 0, -187, 0, -187, 0, 0, -187, 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, -184, 0, -184, -184, 0, 0, 0, 0, 0, 0, 0, -184, 0, -184, 0, 0, -184, 0, 0, 0, 0, 0, -184, 0,
         // State 147
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -44, 0,
         // State 148
@@ -506966,27 +538406,27 @@
         // State 154
         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, -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 155
-        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, -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,
+        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, -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 156
-        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, -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,
+        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, -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 157
         0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, -111, -111, 0, 0, -111, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, -111, 0,
         // State 158
-        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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, -197, 0,
+        0, -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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, -194, 0,
         // State 159
-        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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, -198, 0,
+        0, -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, -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 160
-        -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, 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 161
         -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, 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 161
+        -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, 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,
         // State 162
-        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, -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 163
         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, -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 163
+        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, -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,
         // State 164
-        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, -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,
+        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, -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 165
-        -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, 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,
+        -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, 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 166
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 167
@@ -507002,13 +538442,13 @@
         // State 172
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -45, 0,
         // State 173
-        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, 0, -188, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, 0,
         // State 174
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -35, 0,
         // State 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, 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 176
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, -202, 0, 0, 0, -202, 0, 0, -202, 0, -202, 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, -202, 0, 0, -202, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, -201, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0,
         // State 177
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, -103, -103, 0, 0, 0, 0, 0, 0, 0, -103, 0, -103, 0, 0, -103, 0, 0, 0, 0, 0, -103, 0,
         // State 178
@@ -507044,7 +538484,7 @@
         // State 193
         -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, 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 194
-        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, -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,
+        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, -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 195
         0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, -115, -115, 0, 0, -115, -115, -115, 0, -115, -115, -115, 0, -115, -115, -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 196
@@ -507066,9 +538506,9 @@
         // State 204
         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, 0,
         // State 205
-        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 0,
         // State 206
-        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -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, -176, -176, -176, 0, 0, -176, 0, 0, 0, 0, -176, 0, 0, 0, -176, 0, 0, 0, -176, 0,
         // State 207
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
         // State 208
@@ -507078,7 +538518,7 @@
         // State 210
         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, -158, -158, -158, 0, 0, -158, 0, 0, 0, 0, -158, 0, 0, 0, -158, 0, 0, 0, -158, 0,
         // State 211
-        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -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, -177, -177, -177, 0, 0, -177, 0, 0, 0, 0, -177, 0, 0, 0, -177, 0, 0, 0, -177, 0,
         // State 212
         0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 213
@@ -507092,25 +538532,25 @@
         // State 217
         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, -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 218
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, -174, -174, 0, 0, -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, -174, 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, -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 219
         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, 0,
         // State 220
         0, 0, 0, 0, 0, 0, -79, 0, 0, 246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 221
-        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, -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,
+        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, -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 222
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 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,
         // State 223
         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, -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 224
-        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, -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, -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, -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,
         // State 225
         0, 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 226
         0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, -109, 0, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, -109, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0,
         // State 227
-        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, -203, 0, 0, 0, -203, 0, 0, -203, 0, -203, 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, -203, 0, 0, -203, 0,
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, -202, 0, 0, 0, -202, 0, 0, -202, 0, -202, 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, -202, 0, 0, -202, 0,
         // State 228
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 229
@@ -507120,27 +538560,27 @@
         // State 231
         0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 232
-        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, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
+        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
         // State 233
-        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, -184, -184, -184, 0, 0, -184, 0, 0, 0, 0, -184, 0, 0, 0, -184, 0, 0, 0, -184, 0,
+        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -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, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
+        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
         // State 235
         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, -159, -159, -159, 0, 0, -159, 0, 0, 0, 0, -159, 0, 0, 0, -159, 0, 0, 0, -159, 0,
         // State 236
         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, -78, -78, -78, -78, -78, -78, -78, 0, 0, -78, 0, -78, 0, -78, -78, 0, -78, 0, -78, 0, 0, 0, -78, 0,
         // State 237
-        0, 0, 0, 0, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, -185, -185, 0, 0, -185, 0, 0, 0, 0, -185, 0, 0, 0, -185, 0, 0, 0, -185, 0,
+        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
         // State 238
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
         // State 239
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 240
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 241
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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 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, -186, 0, -186, -186, 0, 0, 0, 0, 0, 0, 0, -186, 0, -186, 0, 0, -186, 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, -183, 0, -183, -183, 0, 0, 0, 0, 0, 0, 0, -183, 0, -183, 0, 0, -183, 0, 0, 0, 0, 0, -183, 0,
         // State 243
         0, 0, 0, 0, 0, 0, -81, 0, 0, 259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 244
@@ -507148,7 +538588,7 @@
         // State 245
         -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
         // State 246
-        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, -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,
+        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, -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 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, 0, 262, 0,
         // State 248
@@ -507166,7 +538606,7 @@
         // State 254
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 255
-        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, 0, -221, -221, -221, 0, 0, -221, 0, 0, 0, 0, -221, 0, 0, 0, -221, 0, 0, 0, -221, 0,
+        0, 0, 0, 0, 0, 0, 0, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 0, 0, -220, 0, 0, 0, 0, -220, 0, 0, 0, -220, 0, 0, 0, -220, 0,
         // State 256
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0,
         // State 257
@@ -507178,7 +538618,7 @@
         // State 260
         0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -97, 0,
         // State 261
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, -188, 0, 0, -188, 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, -188, 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, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
         // State 263
@@ -507194,9 +538634,9 @@
         // 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, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
         // State 269
-        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, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
         // State 270
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
         // State 271
         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, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
         // State 272
@@ -507399,7 +538839,7 @@
         // State 89
         0,
         // State 90
-        -243,
+        -242,
         // State 91
         0,
         // State 92
@@ -507910,31 +539350,31 @@
                 0 => 90,
                 _ => 96,
             },
-            72 => match state {
+            71 => match state {
                 2..=3 => 97,
                 _ => 102,
             },
-            74 => match state {
+            72 => match state {
                 42 | 59 => 208,
                 58 => 230,
                 _ => 156,
             },
-            75 => match state {
+            73 => match state {
                 49 => 218,
                 _ => 194,
             },
-            76 => 49,
-            78 => 209,
-            79 => match state {
+            74 => 49,
+            76 => 209,
+            77 => match state {
                 59 => 235,
                 _ => 210,
             },
-            80 => 98,
-            81 => match state {
+            78 => 98,
+            79 => match state {
                 24 => 145,
                 _ => 129,
             },
-            83 => match state {
+            81 => match state {
                 71 => 252,
                 79 => 264,
                 82 => 270,
@@ -507942,13 +539382,13 @@
                 89 => 278,
                 _ => 199,
             },
-            84 => match state {
+            82 => match state {
                 78 => 260,
                 _ => 249,
             },
-            86 => 157,
-            87 => 158,
-            88 => match state {
+            84 => 157,
+            85 => 158,
+            87 => match state {
                 41 => 57,
                 65 => 76,
                 13 => 117,
@@ -507962,14 +539402,14 @@
                 85 => 273,
                 _ => 126,
             },
-            90 => match state {
+            89 => match state {
                 19 => 134,
                 _ => 118,
             },
-            92 => 19,
-            93 => 36,
-            94 => 159,
-            95 => 211,
+            91 => 19,
+            92 => 36,
+            93 => 159,
+            94 => 211,
             _ => 0,
         }
     }
@@ -508039,25 +539479,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -508083,7 +539525,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -508107,7 +539549,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -508115,7 +539557,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -508139,22 +539581,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -508215,10 +539659,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -508239,10 +539684,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -509219,25 +540665,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -509249,14 +540695,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -509268,19 +540714,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -509292,109 +540738,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -509406,31 +540852,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -509441,68 +540887,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -509513,26 +540959,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -509544,30 +540990,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -509691,13 +541137,13 @@
                     nonterminal_produced: 115,
                 }
             }
-            241 => {
+            241 => __state_machine::SimulatedReduce::Accept,
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 116,
+                    nonterminal_produced: 117,
                 }
             }
-            242 => __state_machine::SimulatedReduce::Accept,
             243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -509800,12 +541246,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -509823,10 +541263,12 @@
 
         #[allow(dead_code)]
         pub fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::Module, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -509834,18 +541276,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -509859,7 +541303,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -509873,802 +541317,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::Module,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            242 => {
                 // __Module = Module => ActionFn(38);
                 let __sym0 = __pop_Variant46(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action38::<>(__sym0);
+                let __nt = super::__action38::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            242 => {
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -510763,16 +542206,6 @@
             _ => __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)>
@@ -510783,13 +542216,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -510873,16 +542306,6 @@
             _ => __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)>
@@ -510903,13 +542326,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -511053,63 +542476,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -511123,13 +542546,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -511143,43 +542566,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -511193,13 +542616,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -511233,13 +542656,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -511293,13 +542716,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -511334,1281 +542757,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -512617,59 +544202,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -512678,59 +544271,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -512739,216 +544340,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -512959,44 +544588,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -513005,180 +544640,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -513188,30 +544845,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -513221,30 +544882,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -513254,62 +544919,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -513317,65 +544990,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -513384,18 +545065,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -513406,18 +545089,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -513431,18 +545116,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -513454,18 +545141,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -513478,18 +545167,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -513500,18 +545191,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -513524,18 +545217,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -513546,18 +545241,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -513569,18 +545266,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -513590,77 +545289,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -513669,18 +545378,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -513689,36 +545400,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -513728,36 +545443,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -513768,18 +545487,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -513789,20 +545510,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -513811,20 +545534,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -513832,30 +545557,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -513864,108 +545593,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -513978,15 +545721,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -513998,154 +545743,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -514154,94 +545866,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -514250,75 +545974,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -514327,15 +546061,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -514344,15 +546080,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -514361,35 +546099,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -514401,18 +546143,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -514421,65 +546165,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -514487,80 +546239,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -514570,95 +546332,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -514666,79 +546476,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -514747,15 +546567,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -514764,15 +546586,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -514781,181 +546605,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -514965,594 +546813,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce243<
+    fn __reduce242<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 117)
+    }
+    fn __reduce243<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -515623,24 +547549,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -515710,7 +547634,7 @@
         // State 32
         0, 0, 0, 182, 0, 0, -110, 0, 183, -110, 184, 0, 0, -110, 0, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, 185, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 186, 0, -110, 0,
         // State 33
-        0, -170, -170, -170, -170, 50, -170, -170, -170, -170, -170, 0, 51, -170, -170, 0, 0, -170, -170, -170, -170, -170, -170, -170, 52, -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, -167, -167, -167, -167, 50, -167, -167, -167, -167, -167, 0, 51, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, 52, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
         // State 34
         151, 0, 0, 36, 0, 53, 0, 38, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 0, 99, 0, 0, 154, 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 156,
         // State 35
@@ -515740,7 +547664,7 @@
         // State 47
         151, 0, 0, 36, 0, 53, 0, 38, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 0, 99, 0, 0, 154, 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 156,
         // State 48
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 51, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, 52, -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, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 51, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, 52, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
         // State 49
         151, 0, 0, 36, 0, 37, -80, 38, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 0, 99, 0, 0, 154, 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 156,
         // State 50
@@ -515752,7 +547676,7 @@
         // State 53
         151, 0, 0, 36, 0, 53, 0, 38, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 0, 99, 0, 0, 154, 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 156,
         // State 54
-        0, -170, -170, -170, -170, 50, -170, -170, -170, -170, -170, 0, 51, 0, -170, 0, 221, -170, -170, -170, 0, -170, -170, -170, 52, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        0, -167, -167, -167, -167, 50, -167, -167, -167, -167, -167, 0, 51, 0, -167, 0, 221, -167, -167, -167, 0, -167, -167, -167, 52, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 55
         0, 0, 0, 109, 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, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 56
@@ -515768,7 +547692,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, 0, 99, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 62
-        151, 0, 0, 36, 0, 37, 0, 38, 0, 0, 152, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 0, 99, 0, 0, 154, 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 156,
+        151, 0, 0, 36, 0, 37, 0, 38, 0, 0, 152, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 0, 99, 0, 0, 154, 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 156,
         // State 63
         151, 0, 0, 36, 0, 37, 0, 38, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 0, 99, 0, 0, 154, 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 156,
         // State 64
@@ -515784,7 +547708,7 @@
         // State 69
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
         // State 70
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, -170, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, -167, 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,
         // State 71
         151, 0, 0, 36, 0, 37, 0, 38, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 0, 99, 0, 0, 154, 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 156,
         // State 72
@@ -515824,15 +547748,15 @@
         // State 89
         151, 0, 0, 36, 0, 37, 0, 38, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 0, 99, 0, 0, 154, 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 156,
         // 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, -165, 0, -165, -165, 0, 0, 0, 0, 0, 0, 0, -165, 0, -165, 0, 0, -165, 0, 0, 0, 0, 0, -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, -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 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, -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, 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 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, -167, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, -167, 0, -167, 0, 0, -167, 0, 0, 0, 0, 0, -167, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 93
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 94
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, 0, -166, -166, 0, 0, 0, 0, 0, 0, 0, -166, 0, -166, 0, 0, -166, 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, -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 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, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 96
@@ -515854,13 +547778,13 @@
         // State 104
         0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 105
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, -200, 0, 0, 0, -200, 23, 0, -200, 0, -200, 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, -200, 0, 0, -200, 0,
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, -199, 0, 0, 0, -199, 23, 0, -199, 0, -199, 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, -199, 0, 0, -199, 0,
         // State 106
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 107
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 108
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 109
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 110
@@ -515886,15 +547810,15 @@
         // State 120
         0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0,
         // State 121
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, -201, 0, 0, 0, -201, 39, 0, -201, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0,
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, -200, 0, 0, 0, -200, 39, 0, -200, 0, -200, 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, -200, 0, 0, -200, 0,
         // State 122
-        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, 0, -213, 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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 123
-        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, 0, -207, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 124
-        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, 0, -208, 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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 125
-        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, 0, -209, 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, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 126
         0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0,
         // State 127
@@ -515922,7 +547846,7 @@
         // State 138
         0, 0, 0, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -93, 0,
         // State 139
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -187, 0, -187, -187, 0, 0, 0, 0, 0, 0, 0, -187, 0, -187, 0, 0, -187, 0, 0, 0, 0, 0, -187, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, 0, -184, -184, 0, 0, 0, 0, 0, 0, 0, -184, 0, -184, 0, 0, -184, 0, 0, 0, 0, 0, -184, 0,
         // State 140
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -44, 0,
         // State 141
@@ -515934,27 +547858,27 @@
         // State 144
         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, -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 145
-        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, -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,
+        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, -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 146
-        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, -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,
+        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, -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
         0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, -111, -111, 0, 0, -111, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, -111, 0,
         // State 148
-        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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, -197, 0,
+        0, -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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, -194, 0,
         // State 149
-        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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, -198, 0,
+        0, -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, -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 150
-        -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, 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 151
         -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, 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 151
+        -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, 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,
         // State 152
-        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, -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 153
         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, -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 153
+        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, -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,
         // State 154
-        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, -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,
+        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, -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 155
-        -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, 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,
+        -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, 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 156
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 157
@@ -515978,9 +547902,9 @@
         // State 166
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -45, 0,
         // State 167
-        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, 0, -188, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, 0,
         // State 168
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, -202, 0, 0, 0, -202, 0, 0, -202, 0, -202, 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, -202, 0, 0, -202, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, -201, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0,
         // State 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, -103, 0, -103, -103, 0, 0, 0, 0, 0, 0, 0, -103, 0, -103, 0, 0, -103, 0, 0, 0, 0, 0, -103, 0,
         // State 170
@@ -516016,7 +547940,7 @@
         // State 185
         -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, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
         // State 186
-        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, -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,
+        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, -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 187
         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, -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 188
@@ -516038,9 +547962,9 @@
         // State 196
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 197
-        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 0,
         // State 198
-        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -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, -176, -176, -176, 0, 0, -176, 0, 0, 0, 0, -176, 0, 0, 0, -176, 0, 0, 0, -176, 0,
         // State 199
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 200
@@ -516050,7 +547974,7 @@
         // State 202
         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, -158, -158, -158, 0, 0, -158, 0, 0, 0, 0, -158, 0, 0, 0, -158, 0, 0, 0, -158, 0,
         // State 203
-        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -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, -177, -177, -177, 0, 0, -177, 0, 0, 0, 0, -177, 0, 0, 0, -177, 0, 0, 0, -177, 0,
         // State 204
         0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 205
@@ -516070,25 +547994,25 @@
         // State 212
         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, -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 213
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, -174, -174, 0, 0, -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, -174, 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, -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 214
         0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 215
         0, 0, 0, 0, 0, 0, -79, 0, 0, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 216
-        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, -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,
+        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, -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 217
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 245, 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,
         // State 218
         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, -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 219
-        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, -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, -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, -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,
         // State 220
         0, 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 221
         0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, -109, 0, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, -109, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0,
         // State 222
-        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, -203, 0, 0, 0, -203, 0, 0, -203, 0, -203, 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, -203, 0, 0, -203, 0,
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, -202, 0, 0, 0, -202, 0, 0, -202, 0, -202, 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, -202, 0, 0, -202, 0,
         // State 223
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 224
@@ -516098,23 +548022,23 @@
         // State 226
         0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 227
-        0, 0, 0, 0, 0, 0, 0, -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, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
+        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
         // State 228
-        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, -184, -184, -184, 0, 0, -184, 0, 0, 0, 0, -184, 0, 0, 0, -184, 0, 0, 0, -184, 0,
+        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
         // State 229
-        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
+        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
         // State 230
         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, -159, -159, -159, 0, 0, -159, 0, 0, 0, 0, -159, 0, 0, 0, -159, 0, 0, 0, -159, 0,
         // State 231
         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, -78, -78, -78, -78, -78, -78, -78, 0, 0, -78, 0, -78, 0, -78, -78, 0, -78, 0, -78, 0, 0, 0, -78, 0,
         // State 232
-        0, 0, 0, 0, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, -185, -185, 0, 0, -185, 0, 0, 0, 0, -185, 0, 0, 0, -185, 0, 0, 0, -185, 0,
+        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
         // State 233
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 234
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 235
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 236
         0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, -89, 0,
         // State 237
@@ -516124,7 +548048,7 @@
         // State 239
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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 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, -186, 0, -186, -186, 0, 0, 0, 0, 0, 0, 0, -186, 0, -186, 0, 0, -186, 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, -183, 0, -183, -183, 0, 0, 0, 0, 0, 0, 0, -183, 0, -183, 0, 0, -183, 0, 0, 0, 0, 0, -183, 0,
         // State 241
         0, 0, 0, 0, 0, 0, -81, 0, 0, 259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 242
@@ -516132,7 +548056,7 @@
         // State 243
         -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
         // State 244
-        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, -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,
+        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, -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 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, 0, 0, 0, 0, 0, 0, 262, 0,
         // State 246
@@ -516150,7 +548074,7 @@
         // State 252
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 253
-        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, 0, -221, -221, -221, 0, 0, -221, 0, 0, 0, 0, -221, 0, 0, 0, -221, 0, 0, 0, -221, 0,
+        0, 0, 0, 0, 0, 0, 0, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 0, 0, -220, 0, 0, 0, 0, -220, 0, 0, 0, -220, 0, 0, 0, -220, 0,
         // State 254
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -35, 0,
         // State 255
@@ -516166,7 +548090,7 @@
         // State 260
         0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -97, 0,
         // State 261
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, -188, 0, 0, -188, 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, -188, 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, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
         // State 263
@@ -516182,9 +548106,9 @@
         // 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, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
         // State 269
-        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, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
         // State 270
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
         // State 271
         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, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
         // State 272
@@ -516387,15 +548311,15 @@
         // State 89
         0,
         // State 90
-        -165,
+        -163,
         // State 91
-        -164,
+        -162,
         // State 92
-        -167,
+        -165,
         // State 93
-        -244,
+        -243,
         // State 94
-        -166,
+        -164,
         // State 95
         0,
         // State 96
@@ -516485,7 +548409,7 @@
         // State 138
         0,
         // State 139
-        -187,
+        -184,
         // State 140
         0,
         // State 141
@@ -516687,7 +548611,7 @@
         // State 239
         -132,
         // State 240
-        -186,
+        -183,
         // State 241
         0,
         // State 242
@@ -516895,32 +548819,32 @@
             },
             69 => 58,
             70 => 92,
-            72 => match state {
+            71 => match state {
                 0 => 93,
                 17 | 26 => 130,
                 _ => 114,
             },
-            74 => match state {
+            72 => match state {
                 40 | 58 => 200,
                 57 => 225,
                 _ => 146,
             },
-            75 => match state {
+            73 => match state {
                 48 => 213,
                 _ => 186,
             },
-            76 => 48,
-            78 => 201,
-            79 => match state {
+            74 => 48,
+            76 => 201,
+            77 => match state {
                 58 => 230,
                 _ => 202,
             },
-            80 => 94,
-            81 => match state {
+            78 => 94,
+            79 => match state {
                 21 => 138,
                 _ => 120,
             },
-            83 => match state {
+            81 => match state {
                 71 => 250,
                 79 => 264,
                 82 => 270,
@@ -516928,13 +548852,13 @@
                 89 => 278,
                 _ => 191,
             },
-            84 => match state {
+            82 => match state {
                 78 => 260,
                 _ => 247,
             },
-            86 => 147,
-            87 => 148,
-            88 => match state {
+            84 => 147,
+            85 => 148,
+            87 => match state {
                 39 => 56,
                 65 => 76,
                 7 => 106,
@@ -516948,14 +548872,14 @@
                 85 => 273,
                 _ => 117,
             },
-            90 => match state {
+            89 => match state {
                 13 => 122,
                 _ => 107,
             },
-            92 => 13,
-            93 => 34,
-            94 => 149,
-            95 => 203,
+            91 => 13,
+            92 => 34,
+            93 => 149,
+            94 => 203,
             _ => 0,
         }
     }
@@ -517025,25 +548949,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -517069,7 +548995,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -517093,7 +549019,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -517101,7 +549027,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -517125,22 +549051,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -517201,10 +549129,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -517225,10 +549154,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -518205,25 +550135,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -518235,14 +550165,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -518254,19 +550184,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -518278,109 +550208,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -518392,31 +550322,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -518427,68 +550357,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -518499,26 +550429,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -518530,30 +550460,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -518683,13 +550613,13 @@
                     nonterminal_produced: 116,
                 }
             }
-            242 => {
+            242 => __state_machine::SimulatedReduce::Accept,
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 117,
+                    nonterminal_produced: 118,
                 }
             }
-            243 => __state_machine::SimulatedReduce::Accept,
             244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -518786,12 +550716,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -518809,10 +550733,12 @@
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::ModuleStatement, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -518820,18 +550746,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -518845,7 +550773,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -518859,802 +550787,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::ModuleStatement,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            243 => {
                 // __ModuleStatement = ModuleStatement => ActionFn(39);
-                let __sym0 = __pop_Variant48(__symbols);
+                let __sym0 = __pop_Variant47(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action39::<>(__sym0);
+                let __nt = super::__action39::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            243 => {
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -519749,16 +551676,6 @@
             _ => __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)>
@@ -519769,13 +551686,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -519859,16 +551776,6 @@
             _ => __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)>
@@ -519889,13 +551796,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -520039,63 +551946,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -520109,13 +552016,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -520129,43 +552036,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -520179,13 +552086,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -520219,13 +552126,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -520279,13 +552186,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -520320,1281 +552227,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -521603,59 +553672,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -521664,59 +553741,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -521725,216 +553810,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -521945,44 +554058,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -521991,180 +554110,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -522174,30 +554315,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -522207,30 +554352,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -522240,62 +554389,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -522303,65 +554460,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -522370,18 +554535,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -522392,18 +554559,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -522417,18 +554586,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -522440,18 +554611,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -522464,18 +554637,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -522486,18 +554661,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -522510,18 +554687,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -522532,18 +554711,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -522555,18 +554736,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -522576,77 +554759,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -522655,18 +554848,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -522675,36 +554870,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -522714,36 +554913,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -522754,18 +554957,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -522775,20 +554980,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -522797,20 +555004,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -522818,30 +555027,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -522850,108 +555063,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -522964,15 +555191,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -522984,154 +555213,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -523140,94 +555336,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -523236,75 +555444,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -523313,15 +555531,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -523330,15 +555550,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -523347,35 +555569,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -523387,18 +555613,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -523407,65 +555635,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -523473,80 +555709,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -523556,95 +555802,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -523652,79 +555946,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -523733,15 +556037,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -523750,15 +556056,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -523767,181 +556075,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -523951,594 +556283,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 117)
+        (1, 116)
+    }
+    fn __reduce243<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant48(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action4::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -524546,7 +556956,7 @@
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::needless_lifetimes, clippy::type_complexity, clippy::needless_return, clippy::too_many_arguments, clippy::never_loop, clippy::match_single_binding, clippy::needless_raw_string_hashes)]
-mod __parse__Modules {
+mod __parse__PathExpr {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -524609,590 +557019,252 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 2
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 4, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 5, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 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, 7, 0, 103, 8, 0, 0, 0, 0, 0, 0, 0, 3, 0, 104, 0, 0, 9, 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, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 4
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 103, 8, 0, 0, 0, 0, 0, 0, 0, 3, 0, 104, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0,
+        46, 0, 0, 11, 0, 12, 0, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 5
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 103, 8, 0, 0, 0, 0, 0, 0, 0, 3, 0, 104, 0, 0, 9, 0, 0, 0, 0, 0, 107, 0,
+        0, 53, -120, -120, 54, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 55, 56, 0, 57, 58, 59, 0, -120, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 60, -120, 0,
         // 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, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 61, -122, 0, 0, -122, 62, -122, -122, -122, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, -122, -122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, 0, -122, 0,
         // State 7
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 64, 0, 0, -110, 0, 65, -110, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 67, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, -110, 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, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -167, -167, -167, -167, 18, -167, -167, -167, -167, -167, 0, 4, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, 5, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 9
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, 0, 0, 0,
+        46, 0, 0, 11, 0, 19, 0, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // 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, 7, 0, 103, 8, 0, 0, 0, 0, 0, 0, 0, 3, 0, 104, 0, 0, 9, 0, 0, 0, 0, 0, 114, 0,
+        46, 0, 0, 11, 0, 19, 0, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 20, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 11
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        46, 0, 0, 11, 0, 12, 0, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // 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, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        46, 0, 0, 11, 0, 19, 0, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 13
-        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, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, 0, 0, 0, 0,
+        0, 0, 0, 78, 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, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 14
-        0, 0, 0, 123, 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, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        46, 0, 0, 11, 0, 19, 0, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 15
-        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, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        46, 0, 0, 11, 0, 19, 0, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // 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, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        46, 0, 0, 11, 0, 19, 0, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 17
-        0, 0, 0, 123, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        46, 0, 0, 11, 0, 12, -80, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 18
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0,
+        46, 0, 0, 11, 0, 12, 0, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // 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, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -88, 0,
+        46, 0, 0, 11, 0, 19, 0, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 20
-        0, 0, 0, 123, 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, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -167, -167, -167, -167, 18, -167, -167, -167, -167, -167, 0, 4, 0, -167, 0, 85, 0, -167, -167, 0, -167, -167, -167, 5, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 21
-        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, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 78, 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, 34, 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, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 53, -119, -119, 54, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, 55, 56, 0, 57, 58, 59, 0, -119, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 60, -119, 0,
         // State 23
-        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, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 61, -121, 0, 0, -121, 62, -121, -121, -121, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, -121, 0,
         // State 24
-        0, 0, 0, 123, 0, 0, 0, 124, 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, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        46, 0, 0, 11, 0, 12, -82, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // 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, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 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, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90, 0,
+        0, 0, 0, 78, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 27
-        0, 0, 0, 123, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 78, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 28
-        164, 0, 0, 39, 0, 40, 0, 41, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 96, 0, 0, 167, 0, 0, 0, 0, 0, 0, 168, 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, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 29
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0,
+        0, 0, 0, 78, 0, 0, 0, 79, 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, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 30
-        0, 0, 0, 123, 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, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 78, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 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, -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, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        46, 0, 0, 11, 0, 12, 0, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 32
-        0, 0, 0, 123, 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, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 33
-        0, 182, -120, -120, 183, 0, -120, -120, -120, -120, -120, 0, 0, -120, -120, 0, 0, -120, 184, 185, 0, 186, 187, 188, 0, -120, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, -120, 189, -120, 0,
+        0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, 0, -139, -139, -139, 0, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 0,
         // State 34
-        0, 0, 190, -122, 0, 0, -122, 191, -122, -122, -122, 0, 0, -122, 192, 0, 0, -122, 0, 0, 0, 0, 0, 0, 0, -122, -122, -122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, -122, 0, -122, 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, -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, 0, 0, 193, 0, 0, -110, 0, 194, -110, 195, 0, 0, -110, 0, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, 196, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 197, 0, -110, 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, -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 36
-        0, -170, -170, -170, -170, 52, -170, -170, -170, -170, -170, 0, 53, -170, -170, 0, 0, -170, -170, -170, -170, -170, -170, -170, 54, -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, -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, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
         // State 37
-        164, 0, 0, 39, 0, 55, 0, 41, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 96, 0, 0, 167, 0, 0, 0, 0, 0, 0, 168, 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, 52, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 38
-        164, 0, 0, 39, 0, 55, 0, 41, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 96, 0, 0, 167, 0, 0, 0, 56, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 169,
+        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, -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 39
-        164, 0, 0, 39, 0, 40, 0, 41, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 96, 0, 0, 167, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 169,
+        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, -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 40
-        164, 0, 0, 39, 0, 55, 0, 41, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 96, 0, 0, 167, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 169,
+        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, -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 41
-        0, 0, 0, 123, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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, 0, 0, 123, 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, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
         // State 43
-        0, 0, 0, 0, 0, 0, 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 96, 63, 0, 0, 64, 0, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 0, 0,
+        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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
         // State 44
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 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, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, 0,
         // State 45
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -92, 0,
+        -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, 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, 0, 0, 123, 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, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -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, 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,
         // State 47
-        164, 0, 0, 39, 0, 55, 0, 41, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 96, 0, 0, 167, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 169,
+        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, -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
-        164, 0, 0, 39, 0, 55, 0, 41, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 96, 0, 0, 167, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 169,
+        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, -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,
         // State 49
-        164, 0, 0, 39, 0, 55, 0, 41, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 96, 0, 0, 167, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 169,
+        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, -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 50
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 53, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, 54, -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,
+        -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, 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 51
-        164, 0, 0, 39, 0, 40, -80, 41, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 96, 0, 0, 167, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 169,
+        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, -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 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, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
         // State 53
-        164, 0, 0, 39, 0, 40, 0, 41, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 96, 0, 0, 167, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 169,
+        -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, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
         // State 54
-        164, 0, 0, 39, 0, 40, 0, 41, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 96, 0, 0, 167, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 169,
+        -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, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
         // State 55
-        164, 0, 0, 39, 0, 55, 0, 41, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 96, 0, 0, 167, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 169,
+        -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, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
         // State 56
-        0, -170, -170, -170, -170, 52, -170, -170, -170, -170, -170, 0, 53, 0, -170, 0, 229, -170, -170, -170, 0, -170, -170, -170, 54, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        -62, 0, 0, -62, 0, -62, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, -62,
         // State 57
-        0, 0, 0, 123, 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, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 58
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        -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, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
         // State 59
-        0, 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, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
         // State 60
-        0, 0, 0, 0, 0, 0, 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 96, 63, 0, 0, 64, 0, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 240, 0,
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
         // State 61
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        -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, 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 62
-        164, 0, 0, 39, 0, 40, 0, 41, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 96, 0, 0, 167, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 169,
+        -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, 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 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, 96, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 64
-        164, 0, 0, 39, 0, 40, 0, 41, 0, 0, 165, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 96, 0, 0, 167, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 169,
+        -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, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
         // State 65
-        164, 0, 0, 39, 0, 40, 0, 41, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 96, 0, 0, 167, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 169,
+        -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, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
         // State 66
-        0, 0, 0, 123, 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, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 67
-        0, 182, -119, -119, 183, 0, -119, -119, -119, -119, -119, 0, 0, -119, -119, 0, 0, -119, 184, 185, 0, 186, 187, 188, 0, -119, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, 189, -119, 0,
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 68
-        0, 0, 190, -121, 0, 0, -121, 191, -121, -121, -121, 0, 0, -121, 192, 0, 0, -121, 0, 0, 0, 0, 0, 0, 0, -121, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, 0, -121, 0,
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, -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 69
-        164, 0, 0, 39, 0, 40, -82, 41, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 96, 0, 0, 167, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 169,
+        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, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
         // State 70
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -96, 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, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 71
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, -170, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 72
-        164, 0, 0, 39, 0, 40, 0, 41, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 96, 0, 0, 167, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 169,
+        0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 73
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 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, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 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, 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, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, -199, 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, -199, 0,
         // State 75
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 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, -108, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 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, -108, 0,
         // State 76
-        0, 0, 0, 123, 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, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 77
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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, 0, -205, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 78
-        0, 0, 0, 123, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, -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 80
-        164, 0, 0, 39, 0, 40, 0, 41, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 96, 0, 0, 167, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 169,
+        0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 81
-        164, 0, 0, 39, 0, 40, 0, 41, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 96, 0, 0, 167, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 169,
+        0, 0, 0, 0, 0, 0, -79, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 82
-        0, 0, 0, 123, 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, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -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 83
-        164, 0, 0, 39, 0, 40, 0, 41, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 96, 0, 0, 167, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 169,
+        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, -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,
         // State 84
-        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, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // 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, 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, -109, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 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, -109, 0,
         // State 86
-        0, 0, 0, 123, 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, 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, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -200, 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, -200, 0,
         // State 87
-        164, 0, 0, 39, 0, 40, 0, 41, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 96, 0, 0, 167, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 169,
+        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 88
-        164, 0, 0, 39, 0, 40, 0, 41, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 96, 0, 0, 167, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 169,
+        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, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 89
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 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, -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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 90
-        164, 0, 0, 39, 0, 40, 0, 41, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 96, 0, 0, 167, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 169,
+        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, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 91
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        0, 0, 0, 0, 0, 0, -81, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 92
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -125, -125, -125, -125, 0, -125, -125, -125, -125, -125, 0, 0, 0, -125, 0, 0, 0, -125, -125, 0, -125, -125, -125, 0, -125, -125, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, -125, -125, 0,
         // State 93
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
         // 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, 0, 4, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0,
         // State 95
-        0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 96
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, 0, -165, -165, 0, 0, 0, 0, 0, 0, 0, -165, 0, -165, 0, 0, -165, 0, 0, 0, 0, 0, -165, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 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, -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, 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,
         // State 98
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 0, -152, -152, 0, 0, 0, 0, 0, 0, 0, -152, 0, -152, 0, 0, -152, -152, 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, -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,
         // State 99
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, -167, 0, -167, 0, 0, -167, 0, 0, 0, 0, 0, -167, 0,
+        -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, -25,
         // 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, -156, 0, -156, -156, 0, 0, 0, 0, 0, 0, 0, -156, 0, -156, 0, 0, -156, 0, 0, 0, 0, 0, -156, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 101
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, 0, -166, -166, 0, 0, 0, 0, 0, 0, 0, -166, 0, -166, 0, 0, -166, 0, 0, 0, 0, 0, -166, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 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, 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, -188, 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, -188, 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, 110, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 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, -153, 0, -153, -153, 0, 0, 0, 0, 0, 0, 0, -153, 0, -153, 0, 0, -153, -153, 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, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // 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, -157, 0, -157, -157, 0, 0, 0, 0, 0, 0, 0, -157, 0, -157, 0, 0, -157, 0, 0, 0, 0, 0, -157, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 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, -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, -54, 0, 0, 0, -54, 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, -54, 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, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
         // State 108
-        0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0,
         // State 109
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
         // State 110
-        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, 19, 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, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
         // State 111
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
         // State 112
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, -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, -104, 0, 0, 0, 0,
-        // State 113
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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 114
-        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, 0,
-        // State 115
-        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, 0,
-        // State 116
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, -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, -106, 0, 0, 0, 0,
-        // State 117
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -147, 0, -147, -147, 0, 0, 0, 0, 0, 0, 0, -147, 0, -147, 0, 0, -147, -147, 0, 0, 0, 0, 0, 0,
-        // State 118
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -39, 0, 0, 0, 0,
-        // State 119
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, -200, 0, 0, 0, -200, 28, 0, -200, 0, -200, 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, -200, 0, 0, -200, 0,
-        // State 120
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 121
-        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, 0, -212, 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, 0, -206, 0, 0, 0, 0, 0, 0, 139, 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, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 124
-        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, 0,
-        // State 125
-        0, 0, 0, 0, 0, 0, -83, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 126
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 127
-        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, 0,
-        // State 128
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
-        // State 129
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 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,
-        // 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, 0, 150, 0,
-        // State 131
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 132
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0,
-        // State 133
-        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, -40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -40, 0, 0, 0, 0,
-        // State 134
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0,
-        // State 135
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -87, 0,
-        // State 136
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, -201, 0, 0, 0, -201, 42, 0, -201, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0,
-        // State 137
-        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, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 138
-        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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 139
-        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, 0, -208, 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, 0, -209, 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, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 142
-        0, 0, 0, 0, 0, 0, -85, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 143
-        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, -29, 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, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 145
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // 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, 46, 0, 0, 0, 0,
-        // State 147
-        0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 148
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 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, -187, 0, -187, -187, 0, 0, 0, 0, 0, 0, 0, -187, 0, -187, 0, 0, -187, 0, 0, 0, 0, 0, -187, 0,
-        // State 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, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -44, 0,
-        // State 151
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -89, 0,
-        // State 152
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 153
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, 0,
-        // State 154
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 155
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 156
-        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, -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 157
-        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, -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 158
-        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, -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 159
-        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, -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 160
-        0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, -111, -111, 0, 0, -111, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, -111, 0,
-        // State 161
-        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, -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 162
-        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, -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 163
-        -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, 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 164
-        -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, 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 165
-        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, -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 166
-        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, -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 167
-        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, -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 168
-        -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, 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 169
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 170
-        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, -30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 171
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, -138, -138, 0, 0, 0, 0, 0, 0, 0, -138, 0, -138, 0, 0, -138, 0, 0, 0, 0, 0, -138, 0,
-        // State 172
-        0, 0, 0, 0, 0, 0, -126, 0, 0, -126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 173
-        0, 0, 0, 0, 0, 0, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 174
         0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 175
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -45, 0,
-        // State 176
-        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, 0, -188, 0,
-        // State 177
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -35, 0,
-        // State 178
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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 179
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, -202, 0, 0, 0, -202, 0, 0, -202, 0, -202, 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, -202, 0, 0, -202, 0,
-        // State 180
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, -103, -103, 0, 0, 0, 0, 0, 0, 0, -103, 0, -103, 0, 0, -103, 0, 0, 0, 0, 0, -103, 0,
-        // State 181
-        -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
-        // State 182
-        -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, 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 183
-        -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, 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 184
-        -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, 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 185
-        -62, 0, 0, -62, 0, -62, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, -62,
-        // State 186
-        -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, 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 187
-        -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, 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 188
-        -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, 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 189
-        -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, 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 190
-        -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, 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 191
-        -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, 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 192
-        -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, 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 193
-        -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, 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 194
-        -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, 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 195
-        -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, 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 196
-        -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, 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 197
-        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, -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 198
-        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, -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 199
-        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, -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 200
-        0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 201
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0,
-        // State 202
-        0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 203
-        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, -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 204
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 205
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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 206
-        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, 0, 0, 0, 0, 0, 0,
-        // State 207
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 208
-        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
-        // State 209
-        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
-        // State 210
-        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, 0,
-        // State 211
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 212
-        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, 0,
-        // State 213
-        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, -158, -158, -158, 0, 0, -158, 0, 0, 0, 0, -158, 0, 0, 0, -158, 0, 0, 0, -158, 0,
-        // State 214
-        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -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, -3, 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, 77, 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,
-        // State 217
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 218
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 246, 0,
-        // State 219
-        0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, -108, 0, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, -108, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0,
-        // State 220
-        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, -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 221
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, -174, -174, 0, 0, -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, -174, 0,
-        // State 222
-        0, 0, 0, 0, 0, 0, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 223
-        0, 0, 0, 0, 0, 0, -79, 0, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 224
-        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, -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 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, 250, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 226
-        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, -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 227
-        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, -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 228
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 229
-        0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, -109, 0, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, -109, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0,
-        // State 230
-        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, -203, 0, 0, 0, -203, 0, 0, -203, 0, -203, 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, -203, 0, 0, -203, 0,
-        // State 231
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 232
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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 233
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 234
-        0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 235
-        0, 0, 0, 0, 0, 0, 0, -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, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
-        // State 236
-        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, -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, -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, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
-        // State 238
-        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, -159, -159, -159, 0, 0, -159, 0, 0, 0, 0, -159, 0, 0, 0, -159, 0, 0, 0, -159, 0,
-        // State 239
-        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, -78, -78, -78, -78, -78, -78, -78, 0, 0, -78, 0, -78, 0, -78, -78, 0, -78, 0, -78, 0, 0, 0, -78, 0,
-        // State 240
-        0, 0, 0, 0, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, -185, -185, 0, 0, -185, 0, 0, 0, 0, -185, 0, 0, 0, -185, 0, 0, 0, -185, 0,
-        // State 241
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 242
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 243
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // 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, 0, -132, 0, -132, -132, 0, 0, 0, 0, 0, 0, 0, -132, 0, -132, 0, 0, -132, 0, 0, 0, 0, 0, -132, 0,
-        // State 245
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 246
-        0, 0, 0, 0, 0, 0, -81, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 247
-        0, -125, -125, -125, -125, 0, -125, -125, -125, -125, -125, 0, 0, -125, -125, 0, 0, -125, -125, -125, 0, -125, -125, -125, 0, -125, -125, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, -125, -125, -125, 0,
-        // State 248
-        -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
-        // State 249
-        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, -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 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, 0, 0, 0, 0, 0, 0, 265, 0,
-        // State 251
-        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, 0, 0, 0, 0,
-        // State 252
-        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, 0, -95, 0,
-        // State 253
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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 254
-        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, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 255
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 256
-        0, 0, 0, 0, 0, 0, 0, -145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, -145, -145, -145, 0, 0, -145, 0, 0, 0, 0, -145, 0, 0, 0, -145, 0, 0, 0, -145, 0,
-        // State 257
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 258
-        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, 0, -221, -221, -221, 0, 0, -221, 0, 0, 0, 0, -221, 0, 0, 0, -221, 0, 0, 0, -221, 0,
-        // State 259
-        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, 0, 0, 0, 0, 0, 0,
-        // State 260
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 261
-        -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, -25,
-        // State 262
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
-        // State 263
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 264
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 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, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
-        // State 266
-        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, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 267
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 268
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0,
-        // State 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, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
-        // State 272
-        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, 47, 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 273
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
-        // State 274
-        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, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
-        // State 275
-        0, 0, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, -144, -144, 0, 0, -144, 0, 0, 0, 0, -144, 0, 0, 0, -144, 0, 0, 0, -144, 0,
-        // State 276
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // 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, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 278
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 279
-        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, -130, -130, -130, 0, 0, -130, 0, 0, 0, 0, -130, 0, 0, 0, -130, 0, 0, 0, -130, 0,
-        // State 280
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 281
-        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, 0,
+        // State 113
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -525201,9 +557273,9 @@
         // State 0
         0,
         // State 1
-        -168,
+        -167,
         // State 2
-        0,
+        -166,
         // State 3
         0,
         // State 4
@@ -525263,15 +557335,15 @@
         // State 31
         0,
         // State 32
-        0,
+        -244,
         // State 33
-        0,
+        -139,
         // State 34
-        0,
+        -170,
         // State 35
-        0,
+        -171,
         // State 36
-        0,
+        -168,
         // State 37
         0,
         // State 38
@@ -525301,7 +557373,7 @@
         // State 50
         0,
         // State 51
-        0,
+        -169,
         // State 52
         0,
         // State 53
@@ -525381,11 +557453,11 @@
         // State 90
         0,
         // State 91
-        -162,
+        0,
         // State 92
-        -245,
+        0,
         // State 93
-        -163,
+        0,
         // State 94
         0,
         // State 95
@@ -525411,7 +557483,7 @@
         // State 105
         0,
         // State 106
-        -161,
+        0,
         // State 107
         0,
         // State 108
@@ -525425,540 +557497,90 @@
         // State 112
         0,
         // State 113
-        -160,
-        // State 114
-        0,
-        // State 115
-        0,
-        // State 116
-        0,
-        // State 117
-        0,
-        // State 118
-        0,
-        // State 119
-        0,
-        // State 120
-        0,
-        // State 121
-        0,
-        // State 122
-        0,
-        // State 123
-        0,
-        // State 124
-        0,
-        // State 125
-        0,
-        // State 126
-        0,
-        // State 127
-        0,
-        // State 128
-        0,
-        // State 129
-        0,
-        // State 130
-        0,
-        // State 131
-        0,
-        // State 132
-        0,
-        // State 133
-        0,
-        // State 134
-        0,
-        // State 135
-        0,
-        // State 136
-        0,
-        // State 137
-        0,
-        // State 138
-        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,
-        // State 278
-        0,
-        // State 279
-        0,
-        // State 280
-        0,
-        // State 281
         0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            1 => 59,
-            14 => 69,
-            17 => 22,
-            20 => 26,
-            23 => 13,
-            26 => 25,
-            29 => 79,
-            32 => 24,
-            35 => 206,
-            36 => 47,
-            37 => 48,
-            38 => 49,
-            39 => match state {
-                44 => 217,
-                58 => 232,
-                73 => 256,
-                75 => 258,
-                77 => 260,
-                84 => 274,
-                85 => 275,
-                89 => 279,
-                _ => 171,
-            },
-            40 => 222,
-            41 => match state {
-                21 => 141,
-                23 => 144,
-                31 => 173,
-                _ => 124,
-            },
-            42 => 134,
-            43 => match state {
-                45 => 218,
-                _ => 130,
-            },
-            44 => 250,
+            14 => 24,
+            29 => 28,
+            32 => 29,
+            36 => 14,
+            37 => 15,
+            38 => 16,
+            40 => 80,
+            44 => 94,
             45 => match state {
-                27 => 154,
-                41 => 204,
-                78 => 262,
-                _ => 128,
+                27 => 100,
+                30 => 107,
+                _ => 97,
             },
-            46 => 96,
-            47 => 111,
             48 => match state {
-                62 => 73,
-                65 => 75,
-                81 => 84,
-                87 => 89,
-                28 => 155,
-                51 => 223,
-                53 => 225,
-                64 => 243,
-                69 => 246,
-                72 => 254,
-                80 => 266,
-                83 => 272,
-                88 => 277,
-                90 => 280,
-                _ => 200,
+                4 => 37,
+                17 => 81,
+                24 => 91,
+                31 => 110,
+                _ => 70,
             },
-            49 => 156,
+            49 => 38,
             50 => match state {
-                37 => 198,
-                38 => 199,
-                40 => 203,
-                47 => 220,
-                55 => 226,
-                _ => 157,
+                9 => 68,
+                10 => 69,
+                12 => 73,
+                14 => 79,
+                19 => 82,
+                _ => 39,
             },
             51 => match state {
-                48 => 67,
-                _ => 33,
+                15 => 22,
+                _ => 5,
             },
             52 => match state {
-                49 => 68,
-                _ => 34,
-            },
-            53 => 35,
-            55 => match state {
-                43 | 60 => 207,
-                _ => 158,
-            },
-            56 => match state {
-                22 => 142,
-                _ => 125,
+                16 => 23,
+                _ => 6,
             },
-            58 => 208,
-            59 => 97,
+            53 => 7,
+            55 => 40,
             60 => match state {
-                28 | 37..=38 | 40 | 43 | 47..=49 | 51 | 53..=55 | 60 | 62 | 64..=65 | 69 | 81 | 87 => 36,
-                39 | 72 | 80 | 83 | 88 | 90 => 56,
-                59 => 71,
-                2 => 94,
-                6 => 107,
-                7 => 108,
-                8 => 110,
-                9 => 112,
-                11 => 114,
-                12 => 115,
-                13 => 116,
-                15 | 21..=23 | 31 => 126,
-                16 => 127,
-                18 | 25 | 45 => 131,
-                19 => 135,
-                20 => 136,
-                26 => 151,
-                52 => 224,
-                61 => 241,
-                63 => 242,
-                70 | 79 => 251,
-                74 => 257,
-                _ => 119,
-            },
-            62 => 201,
-            63 => 209,
-            64 => match state {
-                4 => 104,
-                _ => 98,
-            },
-            65 => 210,
-            66 => 4,
-            68 => match state {
-                4 => 10,
-                _ => 5,
-            },
-            69 => 60,
-            70 => match state {
-                0 => 91,
-                1 => 93,
-                _ => 99,
+                0 => 1,
+                11 | 31 => 20,
+                3 => 36,
+                13 | 26..=27 | 29..=30 => 74,
+                21 => 86,
+                25 | 28 => 95,
+                _ => 8,
             },
-            71 => 1,
+            62 => 71,
             72 => match state {
-                3..=4 => 100,
-                _ => 105,
-            },
-            73 => 92,
-            74 => match state {
-                43 | 60 => 211,
-                59 => 233,
-                _ => 159,
-            },
-            75 => match state {
-                50 => 221,
-                _ => 197,
+                0 => 32,
+                _ => 41,
             },
-            76 => 50,
-            78 => 212,
-            79 => match state {
-                60 => 238,
-                _ => 213,
+            73 => match state {
+                2 => 35,
+                _ => 34,
             },
-            80 => 101,
+            74 => 2,
             81 => match state {
-                25 => 148,
-                _ => 132,
-            },
-            83 => match state {
-                72 => 255,
-                80 => 267,
-                83 => 273,
-                88 => 278,
-                90 => 281,
-                _ => 202,
+                31 => 111,
+                _ => 72,
             },
-            84 => match state {
-                79 => 263,
-                _ => 252,
+            82 => match state {
+                28 => 101,
+                _ => 96,
             },
-            86 => 160,
-            87 => 161,
-            88 => match state {
-                42 => 58,
-                66 => 77,
-                14 => 120,
-                24 => 145,
-                30 => 172,
-                32 => 176,
-                46 => 219,
-                57 => 231,
-                76 => 259,
-                82 => 268,
-                86 => 276,
-                _ => 129,
+            84 => 42,
+            85 => 43,
+            87 => match state {
+                13 => 75,
+                29 => 104,
+                _ => 98,
             },
-            90 => match state {
-                20 => 137,
-                _ => 121,
+            89 => match state {
+                21 => 87,
+                _ => 76,
             },
-            92 => 20,
-            93 => 37,
-            94 => 162,
-            95 => 214,
+            91 => 21,
+            92 => 9,
+            93 => 44,
             _ => 0,
         }
     }
@@ -526028,25 +557650,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -526054,7 +557678,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = Vec<ast::Module>;
+        type Success = ast::PathExpr;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -526072,7 +557696,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -526096,7 +557720,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -526104,7 +557728,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -526128,22 +557752,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -526204,10 +557830,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -526228,10 +557855,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -527208,25 +558836,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -527238,14 +558866,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -527257,19 +558885,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -527281,109 +558909,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -527395,31 +559023,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -527430,68 +559058,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -527502,26 +559130,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -527533,30 +559161,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -527692,13 +559320,13 @@
                     nonterminal_produced: 117,
                 }
             }
-            243 => {
+            243 => __state_machine::SimulatedReduce::Accept,
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 118,
+                    nonterminal_produced: 119,
                 }
             }
-            244 => __state_machine::SimulatedReduce::Accept,
             245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -527789,52 +559417,50 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub struct ModulesParser {
+    pub(crate) struct PathExprParser {
         _priv: (),
     }
 
-    impl Default for ModulesParser { fn default() -> Self { Self::new() } }
-    impl ModulesParser {
-        pub fn new() -> ModulesParser {
-            ModulesParser {
+    impl Default for PathExprParser { fn default() -> Self { Self::new() } }
+    impl PathExprParser {
+        pub(crate) fn new() -> PathExprParser {
+            PathExprParser {
                 _priv: (),
             }
         }
 
         #[allow(dead_code)]
-        pub fn parse<
-            __TOKEN: __ToTriple<>,
+        pub(crate) fn parse<
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
-        ) -> Result<Vec<ast::Module>, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::PathExpr, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -527848,7 +559474,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -527862,802 +559488,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __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>>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> Option<Result<ast::PathExpr,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            244 => {
-                // __Modules = Modules => ActionFn(37);
-                let __sym0 = __pop_Variant49(__symbols);
+                // __PathExpr = PathExpr => ActionFn(4);
+                let __sym0 = __pop_Variant48(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action37::<>(__sym0);
+                let __nt = super::__action4::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            244 => {
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -528752,16 +560377,6 @@
             _ => __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)>
@@ -528772,13 +560387,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -528862,16 +560477,6 @@
             _ => __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)>
@@ -528892,13 +560497,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -529042,63 +560647,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -529112,13 +560717,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -529132,43 +560737,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -529182,13 +560787,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -529222,13 +560827,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -529282,13 +560887,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -529323,1281 +560928,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -530606,59 +562373,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -530667,59 +562442,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -530728,216 +562511,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -530948,44 +562759,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -530994,180 +562811,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -531177,30 +563016,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -531210,30 +563053,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -531243,62 +563090,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -531306,65 +563161,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -531373,18 +563236,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -531395,18 +563260,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -531420,18 +563287,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -531443,18 +563312,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -531467,18 +563338,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -531489,18 +563362,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -531513,18 +563388,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -531535,18 +563412,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -531558,18 +563437,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -531579,77 +563460,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -531658,18 +563549,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -531678,36 +563571,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -531717,36 +563614,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -531757,18 +563658,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -531778,20 +563681,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -531800,20 +563705,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -531821,30 +563728,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -531853,108 +563764,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -531967,15 +563892,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -531987,154 +563914,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -532143,94 +564037,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -532239,75 +564145,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -532316,15 +564232,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -532333,15 +564251,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -532350,35 +564270,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -532390,18 +564314,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -532410,65 +564336,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -532476,80 +564410,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -532559,95 +564503,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -532655,79 +564647,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -532736,15 +564738,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -532753,15 +564757,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -532770,181 +564776,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -532954,602 +564984,680 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 117)
+        (1, 116)
     }
-    fn __reduce243<
+    fn __reduce242<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ModuleStatement = ModuleStatement => ActionFn(39);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 118)
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 117)
+    }
+    fn __reduce244<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant49(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
-pub use self::__parse__Modules::ModulesParser;
+pub(crate) use self::__parse__PathExpr::PathExprParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::needless_lifetimes, clippy::type_complexity, clippy::needless_return, clippy::too_many_arguments, clippy::never_loop, clippy::match_single_binding, clippy::needless_raw_string_hashes)]
-mod __parse__PathExpr {
+mod __parse__PathSegment {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -533612,254 +565720,250 @@
         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),
+        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),
     }
     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, 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, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 2
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 4, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 5, -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,
+        43, 0, 0, 9, 0, 10, 0, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 3
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 50, -120, -120, 51, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 52, 53, 0, 54, 55, 56, 0, -120, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 57, -120, 0,
         // State 4
-        46, 0, 0, 11, 0, 12, 0, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
+        0, 0, 58, -122, 0, 0, -122, 59, -122, -122, -122, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, -122, -122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, 0, -122, 0,
         // State 5
-        0, 53, -120, -120, 54, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 55, 56, 0, 57, 58, 59, 0, -120, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 60, -120, 0,
+        0, 0, 0, 61, 0, 0, -110, 0, 62, -110, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 64, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, -110, 0,
         // State 6
-        0, 0, 61, -122, 0, 0, -122, 62, -122, -122, -122, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, -122, -122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, 0, -122, 0,
+        0, -167, -167, -167, -167, 17, -167, -167, -167, -167, -167, 0, 2, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, 3, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 7
-        0, 0, 0, 64, 0, 0, -110, 0, 65, -110, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 67, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, -110, 0,
+        43, 0, 0, 9, 0, 18, 0, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 8
-        0, -170, -170, -170, -170, 18, -170, -170, -170, -170, -170, 0, 4, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, 5, -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,
+        43, 0, 0, 9, 0, 18, 0, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 19, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 9
-        46, 0, 0, 11, 0, 19, 0, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
+        43, 0, 0, 9, 0, 10, 0, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 10
-        46, 0, 0, 11, 0, 19, 0, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 20, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
+        43, 0, 0, 9, 0, 18, 0, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 11
-        46, 0, 0, 11, 0, 12, 0, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
+        0, 0, 0, 76, 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, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 12
-        46, 0, 0, 11, 0, 19, 0, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
+        43, 0, 0, 9, 0, 18, 0, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 13
-        0, 0, 0, 78, 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, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        43, 0, 0, 9, 0, 18, 0, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 14
-        46, 0, 0, 11, 0, 19, 0, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
+        43, 0, 0, 9, 0, 18, 0, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 15
-        46, 0, 0, 11, 0, 19, 0, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
+        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 2, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 3, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 16
-        46, 0, 0, 11, 0, 19, 0, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
+        43, 0, 0, 9, 0, 10, -80, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 17
-        46, 0, 0, 11, 0, 12, -80, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
+        43, 0, 0, 9, 0, 10, 0, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 18
-        46, 0, 0, 11, 0, 12, 0, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
+        43, 0, 0, 9, 0, 18, 0, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 19
-        46, 0, 0, 11, 0, 19, 0, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
+        0, -167, -167, -167, -167, 17, -167, -167, -167, -167, -167, 0, 2, 0, -167, 0, 84, 0, -167, -167, 0, -167, -167, -167, 3, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 20
-        0, -170, -170, -170, -170, 18, -170, -170, -170, -170, -170, 0, 4, 0, -170, 0, 85, 0, -170, -170, 0, -170, -170, -170, 5, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        0, 0, 0, 76, 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, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 21
-        0, 0, 0, 78, 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, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 50, -119, -119, 51, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, 52, 53, 0, 54, 55, 56, 0, -119, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 57, -119, 0,
         // State 22
-        0, 53, -119, -119, 54, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, 55, 56, 0, 57, 58, 59, 0, -119, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 60, -119, 0,
+        0, 0, 58, -121, 0, 0, -121, 59, -121, -121, -121, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, -121, 0,
         // State 23
-        0, 0, 61, -121, 0, 0, -121, 62, -121, -121, -121, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, -121, 0,
+        43, 0, 0, 9, 0, 10, -82, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 24
-        46, 0, 0, 11, 0, 12, -82, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
-        // 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, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
+        // State 25
+        0, 0, 0, 76, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 26
-        0, 0, 0, 78, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 76, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 27
-        0, 0, 0, 78, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 28
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        // State 28
+        0, 0, 0, 76, 0, 0, 0, 77, 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, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 29
-        0, 0, 0, 78, 0, 0, 0, 79, 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, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 76, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 30
-        0, 0, 0, 78, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        43, 0, 0, 9, 0, 10, 0, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 31
-        46, 0, 0, 11, 0, 12, 0, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 34, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
-        // 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 32
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, -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 33
         0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, 0, -139, -139, -139, 0, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 0,
         // State 34
-        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, -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,
+        0, 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, 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,
         // State 35
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, 0, -174, 0, 0, 0, -174, -174, 0, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, 0,
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, -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 36
-        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, -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,
+        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, -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 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, 52, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -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, -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, -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, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
+        0, -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, -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 39
-        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, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
+        0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
         // State 40
-        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, 0, -199, 0, 0, 0, -199, -199, 0, -199, -199, -199, 0, -199, -199, -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,
+        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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
         // State 41
-        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, -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,
+        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, -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 42
-        0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
+        -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, 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, -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, -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,
+        -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, 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,
         // State 44
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        0, -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, -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
-        -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, 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,
+        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, -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,
         // State 46
-        -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, 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, -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, -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
+        -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, 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 48
-        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, -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, -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, -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 49
-        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, -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,
+        -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
         // State 50
-        -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, 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,
+        -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, 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 51
-        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, -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,
+        -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, 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 52
-        -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
+        -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, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
         // State 53
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        -62, 0, 0, -62, 0, -62, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, -62,
         // State 54
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        -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, 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 55
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        -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, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
         // State 56
-        -62, 0, 0, -62, 0, -62, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, -62,
+        -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, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
         // State 57
-        -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, 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,
+        -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, 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 58
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        -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, 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 59
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 60
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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
-        -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, 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,
+        -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, 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 62
-        -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, 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,
+        -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, 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 63
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 64
-        -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, 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,
+        -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, 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 65
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        0, -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, -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
-        -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, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, -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 67
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        0, -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, -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 68
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
+        0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // 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, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,
         // State 70
-        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, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 71
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 72
-        0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, -199, 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, -199, 0,
         // State 73
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 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, -108, 0,
         // State 74
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, -200, 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, -200, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 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, -108, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 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, -108, 0,
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 76
-        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, 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, 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, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 77
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, -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 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, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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, -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, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
+        0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 80
-        0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -79, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 81
-        0, 0, 0, 0, 0, 0, -79, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 82
         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, -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 82
+        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, -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,
         // State 83
-        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, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
         // State 84
-        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, 0,
-        // State 85
         0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 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, -109, 0,
+        // State 85
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, -200, 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, -200, 0,
         // State 86
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 87
-        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, 0, -213, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 88
         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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 89
         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, 0, -208, 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, 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, -81, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 91
-        0, 0, 0, 0, 0, 0, -81, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 92
         0, -125, -125, -125, -125, 0, -125, -125, -125, -125, -125, 0, 0, 0, -125, 0, 0, 0, -125, -125, 0, -125, -125, -125, 0, -125, -125, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, -125, -125, 0,
-        // State 93
+        // State 92
         -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
+        // State 93
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 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, 0, 0, 0, 0, 103, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 95
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0,
         // State 96
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 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,
         // State 98
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 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,
-        // State 99
         -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, -25,
+        // State 99
+        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, 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, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 101
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        0, 0, 0, 0, 0, 0, -188, 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, -188, 0,
         // State 102
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 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, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
+        // State 103
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 104
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
         // State 105
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
-        // State 106
         0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 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, 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,
         // State 107
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 108
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0,
-        // State 109
+        // State 108
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
+        // State 109
+        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, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
         // State 110
-        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, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
         // State 111
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
-        // State 112
         0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 113
-        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 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, -203, 0,
+        // State 112
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -533868,9 +565972,9 @@
         // State 0
         0,
         // State 1
-        -170,
+        0,
         // State 2
-        -169,
+        0,
         // State 3
         0,
         // State 4
@@ -533928,17 +566032,17 @@
         // State 30
         0,
         // State 31
-        0,
+        -245,
         // State 32
-        -246,
+        -168,
         // State 33
         -139,
         // State 34
-        -173,
+        0,
         // State 35
-        -174,
+        0,
         // State 36
-        -171,
+        0,
         // State 37
         0,
         // State 38
@@ -533962,13 +566066,13 @@
         // State 47
         0,
         // State 48
-        0,
+        -169,
         // State 49
         0,
         // State 50
         0,
         // State 51
-        -172,
+        0,
         // State 52
         0,
         // State 53
@@ -534091,91 +566195,86 @@
         0,
         // State 112
         0,
-        // State 113
-        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            14 => 24,
-            29 => 28,
-            32 => 29,
-            36 => 14,
-            37 => 15,
-            38 => 16,
-            40 => 80,
-            44 => 94,
+            14 => 23,
+            29 => 27,
+            32 => 28,
+            36 => 12,
+            37 => 13,
+            38 => 14,
+            40 => 79,
+            44 => 93,
             45 => match state {
-                27 => 100,
-                30 => 107,
-                _ => 97,
+                26 => 99,
+                29 => 106,
+                _ => 96,
             },
             48 => match state {
-                4 => 37,
-                17 => 81,
-                24 => 91,
-                31 => 110,
-                _ => 70,
+                2 => 34,
+                16 => 80,
+                23 => 90,
+                30 => 109,
+                _ => 68,
             },
-            49 => 38,
+            49 => 35,
             50 => match state {
-                9 => 68,
-                10 => 69,
-                12 => 73,
-                14 => 79,
-                19 => 82,
-                _ => 39,
+                7 => 66,
+                8 => 67,
+                10 => 71,
+                12 => 77,
+                18 => 81,
+                _ => 36,
             },
             51 => match state {
-                15 => 22,
-                _ => 5,
+                13 => 21,
+                _ => 3,
             },
             52 => match state {
-                16 => 23,
-                _ => 6,
+                14 => 22,
+                _ => 4,
             },
-            53 => 7,
-            55 => 40,
+            53 => 5,
+            55 => 37,
             60 => match state {
-                0 => 1,
-                11 | 31 => 20,
-                3 => 36,
-                13 | 26..=27 | 29..=30 => 74,
-                21 => 86,
-                25 | 28 => 95,
-                _ => 8,
-            },
-            62 => 71,
-            74 => match state {
-                0 => 32,
-                _ => 41,
+                9 | 30 => 19,
+                1 => 32,
+                11 | 25..=26 | 28..=29 => 72,
+                20 => 85,
+                24 | 27 => 94,
+                _ => 6,
             },
-            75 => match state {
-                2 => 35,
-                _ => 34,
+            62 => 69,
+            72 => 38,
+            73 => match state {
+                0 => 31,
+                15 => 78,
+                _ => 65,
             },
-            76 => 2,
-            83 => match state {
-                31 => 111,
-                _ => 72,
+            74 => 15,
+            81 => match state {
+                30 => 110,
+                _ => 70,
             },
-            84 => match state {
-                28 => 101,
-                _ => 96,
+            82 => match state {
+                27 => 100,
+                _ => 95,
             },
-            86 => 42,
-            87 => 43,
-            88 => match state {
-                13 => 75,
-                29 => 104,
-                _ => 98,
+            84 => 39,
+            85 => 40,
+            87 => match state {
+                11 => 73,
+                28 => 103,
+                _ => 97,
             },
-            90 => match state {
-                21 => 87,
-                _ => 76,
+            89 => match state {
+                20 => 86,
+                _ => 74,
             },
-            92 => 21,
-            93 => 9,
-            94 => 44,
+            91 => 20,
+            92 => 7,
+            93 => 41,
             _ => 0,
         }
     }
@@ -534245,25 +566344,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -534271,7 +566372,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::PathExpr;
+        type Success = ast::PathSegment;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -534289,7 +566390,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -534313,7 +566414,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -534321,7 +566422,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -534345,22 +566446,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -534421,10 +566524,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -534445,10 +566549,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -535425,25 +567530,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -535455,14 +567560,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -535474,19 +567579,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -535498,109 +567603,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -535612,31 +567717,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -535647,68 +567752,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -535719,26 +567824,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -535750,30 +567855,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -535915,13 +568020,13 @@
                     nonterminal_produced: 118,
                 }
             }
-            244 => {
+            244 => __state_machine::SimulatedReduce::Accept,
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 119,
+                    nonterminal_produced: 120,
                 }
             }
-            245 => __state_machine::SimulatedReduce::Accept,
             246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -536006,52 +568111,50 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct PathExprParser {
+    pub(crate) struct PathSegmentParser {
         _priv: (),
     }
 
-    impl Default for PathExprParser { fn default() -> Self { Self::new() } }
-    impl PathExprParser {
-        pub(crate) fn new() -> PathExprParser {
-            PathExprParser {
+    impl Default for PathSegmentParser { fn default() -> Self { Self::new() } }
+    impl PathSegmentParser {
+        pub(crate) fn new() -> PathSegmentParser {
+            PathSegmentParser {
                 _priv: (),
             }
         }
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
-        ) -> Result<ast::PathExpr, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::PathSegment, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -536065,7 +568168,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -536079,802 +568182,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::PathExpr,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> Option<Result<ast::PathSegment,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            245 => {
-                // __PathExpr = PathExpr => ActionFn(4);
-                let __sym0 = __pop_Variant50(__symbols);
+                // __PathSegment = PathSegment => ActionFn(6);
+                let __sym0 = __pop_Variant49(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action4::<>(__sym0);
+                let __nt = super::__action6::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            245 => {
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -536969,16 +569071,6 @@
             _ => __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)>
@@ -536989,13 +569081,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -537079,16 +569171,6 @@
             _ => __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)>
@@ -537109,13 +569191,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -537259,63 +569341,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -537329,13 +569411,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -537349,43 +569431,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -537399,13 +569481,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -537439,13 +569521,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -537499,13 +569581,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -537540,1281 +569622,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -538823,59 +571067,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -538884,59 +571136,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -538945,216 +571205,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -539165,44 +571453,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -539211,180 +571505,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -539394,30 +571710,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -539427,30 +571747,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -539460,62 +571784,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -539523,65 +571855,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -539590,18 +571930,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -539612,18 +571954,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -539637,18 +571981,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -539660,18 +572006,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -539684,18 +572032,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -539706,18 +572056,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -539730,18 +572082,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -539752,18 +572106,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -539775,18 +572131,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -539796,77 +572154,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -539875,18 +572243,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -539895,36 +572265,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -539934,36 +572308,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -539974,18 +572352,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -539995,20 +572375,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -540017,20 +572399,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -540038,30 +572422,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -540070,108 +572458,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -540184,15 +572586,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -540204,154 +572608,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -540360,94 +572731,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -540456,75 +572839,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -540533,15 +572926,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -540550,15 +572945,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -540567,35 +572964,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -540607,18 +573008,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -540627,65 +573030,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -540693,80 +573104,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -540776,95 +573197,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -540872,79 +573341,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -540953,15 +573432,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -540970,15 +573451,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -540987,181 +573470,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -541171,602 +573678,680 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
-    fn __reduce244<
+    fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 119)
+        let __nt = super::__action5::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
-pub(crate) use self::__parse__PathExpr::PathExprParser;
+pub(crate) use self::__parse__PathSegment::PathSegmentParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::needless_lifetimes, clippy::type_complexity, clippy::needless_return, clippy::too_many_arguments, clippy::never_loop, clippy::match_single_binding, clippy::needless_raw_string_hashes)]
-mod __parse__PathSegment {
+mod __parse__PathSegments {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -541829,208 +574414,206 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // 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, 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, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 2
-        43, 0, 0, 9, 0, 10, 0, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 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, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 3
-        0, 50, -120, -120, 51, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 52, 53, 0, 54, 55, 56, 0, -120, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 57, -120, 0,
+        45, 0, 0, 10, 0, 11, 0, 12, 0, 0, 46, 0, 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 4
-        0, 0, 58, -122, 0, 0, -122, 59, -122, -122, -122, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, -122, -122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, 0, -122, 0,
+        0, 52, -120, -120, 53, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 54, 55, 0, 56, 57, 58, 0, -120, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 59, -120, 0,
         // State 5
-        0, 0, 0, 61, 0, 0, -110, 0, 62, -110, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 64, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, -110, 0,
+        0, 0, 60, -122, 0, 0, -122, 61, -122, -122, -122, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, -122, -122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, 0, -122, 0,
         // State 6
-        0, -170, -170, -170, -170, 17, -170, -170, -170, -170, -170, 0, 2, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, 3, -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, 0, 0, 63, 0, 0, -110, 0, 64, -110, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 66, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, -110, 0,
         // State 7
-        43, 0, 0, 9, 0, 18, 0, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
+        0, -167, -167, -167, -167, 18, -167, -167, -167, -167, -167, 0, 3, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, 4, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 8
-        43, 0, 0, 9, 0, 18, 0, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 19, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
+        45, 0, 0, 10, 0, 19, 0, 12, 0, 0, 46, 0, 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 9
-        43, 0, 0, 9, 0, 10, 0, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
+        45, 0, 0, 10, 0, 19, 0, 12, 0, 0, 46, 0, 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, 20, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 10
-        43, 0, 0, 9, 0, 18, 0, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
+        45, 0, 0, 10, 0, 11, 0, 12, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 36, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 11
-        0, 0, 0, 76, 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, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        45, 0, 0, 10, 0, 19, 0, 12, 0, 0, 46, 0, 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 12
-        43, 0, 0, 9, 0, 18, 0, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
+        0, 0, 0, 77, 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, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 13
-        43, 0, 0, 9, 0, 18, 0, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
+        45, 0, 0, 10, 0, 19, 0, 12, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 36, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 14
-        43, 0, 0, 9, 0, 18, 0, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
+        45, 0, 0, 10, 0, 19, 0, 12, 0, 0, 46, 0, 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, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 2, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 3, -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,
+        45, 0, 0, 10, 0, 19, 0, 12, 0, 0, 46, 0, 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 16
-        43, 0, 0, 9, 0, 10, -80, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
+        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 3, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 4, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 17
-        43, 0, 0, 9, 0, 10, 0, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
+        45, 0, 0, 10, 0, 11, -80, 12, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 36, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 18
-        43, 0, 0, 9, 0, 18, 0, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
+        45, 0, 0, 10, 0, 11, 0, 12, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 36, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 19
-        0, -170, -170, -170, -170, 17, -170, -170, -170, -170, -170, 0, 2, 0, -170, 0, 84, 0, -170, -170, 0, -170, -170, -170, 3, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        45, 0, 0, 10, 0, 19, 0, 12, 0, 0, 46, 0, 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 20
-        0, 0, 0, 76, 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, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -167, -167, -167, -167, 18, -167, -167, -167, -167, -167, 0, 3, 0, -167, 0, 84, 0, -167, -167, 0, -167, -167, -167, 4, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 21
-        0, 50, -119, -119, 51, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, 52, 53, 0, 54, 55, 56, 0, -119, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 57, -119, 0,
+        0, 0, 0, 77, 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, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 22
-        0, 0, 58, -121, 0, 0, -121, 59, -121, -121, -121, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, -121, 0,
+        0, 52, -119, -119, 53, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, 54, 55, 0, 56, 57, 58, 0, -119, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 59, -119, 0,
         // State 23
-        43, 0, 0, 9, 0, 10, -82, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
+        0, 0, 60, -121, 0, 0, -121, 61, -121, -121, -121, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, -121, 0,
         // State 24
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
+        45, 0, 0, 10, 0, 11, -82, 12, 0, 0, 46, 0, 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 25
-        0, 0, 0, 76, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
         // State 26
-        0, 0, 0, 76, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 27
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 28
-        0, 0, 0, 76, 0, 0, 0, 77, 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, 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, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 29
-        0, 0, 0, 76, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 77, 0, 0, 0, 78, 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, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 30
-        43, 0, 0, 9, 0, 10, 0, 11, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 34, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
+        0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 31
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 10, 0, 11, 0, 12, 0, 0, 46, 0, 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 32
-        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, -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,
+        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, -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 33
-        0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, 0, -139, -139, -139, 0, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 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, -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 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, 49, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -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, -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 35
-        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, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
+        0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, 0, -139, -139, -139, 0, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 0,
         // State 36
-        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, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 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,
         // State 37
-        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, -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,
+        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, -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 38
-        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, -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,
+        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, -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 39
-        0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 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, -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, -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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, -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, -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 41
-        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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
         // State 42
-        -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, 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,
+        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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
         // State 43
-        -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, 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,
+        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, -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 44
-        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, -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,
+        -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, 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, -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, -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,
+        -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, 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,
         // State 46
-        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, -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,
+        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, -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
-        -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, 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,
+        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, -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,
         // State 48
-        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, -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,
+        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, -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
-        -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
+        -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, 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
-        -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, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        0, -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, -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 51
-        -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, 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,
+        -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
         // State 52
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        -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, 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 53
-        -62, 0, 0, -62, 0, -62, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, -62,
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 54
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        -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, 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 55
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        -62, 0, 0, -62, 0, -62, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, -62,
         // State 56
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 57
-        -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, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 58
-        -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, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 59
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        -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, 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 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, 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,
+        -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, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
         // State 61
-        -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, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 62
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        -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, 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 63
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        -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, 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 64
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        -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, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
         // State 65
-        0, -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, -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,
+        -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, 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 66
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, -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,
+        -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, 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, -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, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        0, -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, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
         // State 68
-        0, 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, 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, -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, -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 69
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 70
-        0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 71
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 72
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, -200, 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, -200, 0,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 73
-        0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 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, -108, 0,
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, -199, 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, -199, 0,
         // State 74
-        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, 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, -108, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 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, -108, 0,
         // State 75
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 76
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 77
-        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, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 78
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, 0, -174, 0, 0, 0, -174, -174, 0, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, 0,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, -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 79
         0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 80
-        0, 0, 0, 0, 0, 0, -79, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -79, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 81
         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, -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 82
-        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, -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, -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, -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,
         // State 83
-        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, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 84
         0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 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, -109, 0,
         // State 85
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -200, 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, -200, 0,
         // State 86
-        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, 0, -213, 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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 87
-        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, 0, -207, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 88
-        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, 0, -208, 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, 0, -207, 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, 0, -209, 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, 0, -208, 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, -81, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -81, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 91
         0, -125, -125, -125, -125, 0, -125, -125, -125, -125, -125, 0, 0, 0, -125, 0, 0, 0, -125, -125, 0, -125, -125, -125, 0, -125, -125, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, -125, -125, 0,
         // State 92
@@ -542038,7 +574621,7 @@
         // State 93
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0,
         // State 94
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
         // State 95
         0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0,
         // State 96
@@ -542052,13 +574635,13 @@
         // State 100
         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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 101
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, -188, 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, -188, 0,
         // State 102
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
         // State 103
         0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 104
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
         // State 105
         0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 106
@@ -542068,13 +574651,13 @@
         // State 108
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
         // State 109
-        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, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
         // State 110
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
         // State 111
         0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 112
-        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 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, -203, 0,
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -542083,7 +574666,7 @@
         // State 0
         0,
         // State 1
-        0,
+        -246,
         // State 2
         0,
         // State 3
@@ -542143,15 +574726,15 @@
         // State 30
         0,
         // State 31
-        -247,
+        0,
         // State 32
-        -171,
+        -170,
         // State 33
-        -139,
+        -171,
         // State 34
-        0,
+        -168,
         // State 35
-        0,
+        -139,
         // State 36
         0,
         // State 37
@@ -542177,11 +574760,11 @@
         // State 47
         0,
         // State 48
-        -172,
+        0,
         // State 49
         0,
         // State 50
-        0,
+        -169,
         // State 51
         0,
         // State 52
@@ -542309,83 +574892,85 @@
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            14 => 23,
-            29 => 27,
-            32 => 28,
-            36 => 12,
-            37 => 13,
-            38 => 14,
+            14 => 24,
+            29 => 28,
+            32 => 29,
+            36 => 13,
+            37 => 14,
+            38 => 15,
             40 => 79,
             44 => 93,
             45 => match state {
-                26 => 99,
-                29 => 106,
+                27 => 99,
+                30 => 106,
                 _ => 96,
             },
             48 => match state {
-                2 => 34,
-                16 => 80,
-                23 => 90,
-                30 => 109,
-                _ => 68,
+                3 => 36,
+                17 => 80,
+                24 => 90,
+                31 => 109,
+                _ => 69,
             },
-            49 => 35,
+            49 => 37,
             50 => match state {
-                7 => 66,
                 8 => 67,
-                10 => 71,
-                12 => 77,
-                18 => 81,
-                _ => 36,
+                9 => 68,
+                11 => 72,
+                13 => 78,
+                19 => 81,
+                _ => 38,
             },
             51 => match state {
-                13 => 21,
-                _ => 3,
-            },
-            52 => match state {
                 14 => 22,
                 _ => 4,
             },
-            53 => 5,
-            55 => 37,
+            52 => match state {
+                15 => 23,
+                _ => 5,
+            },
+            53 => 6,
+            55 => 39,
             60 => match state {
-                9 | 30 => 19,
-                1 => 32,
-                11 | 25..=26 | 28..=29 => 72,
-                20 => 85,
-                24 | 27 => 94,
-                _ => 6,
+                10 | 31 => 20,
+                2 => 34,
+                12 | 26..=27 | 29..=30 => 73,
+                21 => 85,
+                25 | 28 => 94,
+                _ => 7,
             },
-            62 => 69,
-            74 => 38,
-            75 => match state {
-                0 => 31,
-                15 => 78,
-                _ => 65,
+            62 => 70,
+            72 => 40,
+            73 => match state {
+                1 | 16 => 33,
+                _ => 32,
             },
-            76 => 15,
-            83 => match state {
-                30 => 110,
-                _ => 70,
+            74 => match state {
+                0 => 1,
+                _ => 16,
             },
-            84 => match state {
-                27 => 100,
+            81 => match state {
+                31 => 110,
+                _ => 71,
+            },
+            82 => match state {
+                28 => 100,
                 _ => 95,
             },
-            86 => 39,
-            87 => 40,
-            88 => match state {
-                11 => 73,
-                28 => 103,
+            84 => 41,
+            85 => 42,
+            87 => match state {
+                12 => 74,
+                29 => 103,
                 _ => 97,
             },
-            90 => match state {
-                20 => 86,
-                _ => 74,
+            89 => match state {
+                21 => 86,
+                _ => 75,
             },
-            92 => 20,
-            93 => 7,
-            94 => 41,
+            91 => 21,
+            92 => 8,
+            93 => 43,
             _ => 0,
         }
     }
@@ -542455,25 +575040,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -542481,7 +575068,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::PathSegment;
+        type Success = Vec<ast::PathSegment>;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -542499,7 +575086,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -542523,7 +575110,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -542531,7 +575118,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -542555,22 +575142,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -542631,10 +575220,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -542655,10 +575245,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -543635,25 +576226,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -543665,14 +576256,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -543684,19 +576275,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -543708,109 +576299,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -543822,31 +576413,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -543857,68 +576448,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -543929,26 +576520,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -543960,30 +576551,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -544131,13 +576722,13 @@
                     nonterminal_produced: 119,
                 }
             }
-            245 => {
+            245 => __state_machine::SimulatedReduce::Accept,
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 120,
+                    nonterminal_produced: 121,
                 }
             }
-            246 => __state_machine::SimulatedReduce::Accept,
             247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -544216,52 +576807,50 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct PathSegmentParser {
+    pub struct PathSegmentsParser {
         _priv: (),
     }
 
-    impl Default for PathSegmentParser { fn default() -> Self { Self::new() } }
-    impl PathSegmentParser {
-        pub(crate) fn new() -> PathSegmentParser {
-            PathSegmentParser {
+    impl Default for PathSegmentsParser { fn default() -> Self { Self::new() } }
+    impl PathSegmentsParser {
+        pub fn new() -> PathSegmentsParser {
+            PathSegmentsParser {
                 _priv: (),
             }
         }
 
         #[allow(dead_code)]
-        pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+        pub fn parse<
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
-        ) -> Result<ast::PathSegment, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<Vec<ast::PathSegment>, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -544275,7 +576864,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -544289,802 +576878,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::PathSegment,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> Option<Result<Vec<ast::PathSegment>,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            246 => {
-                // __PathSegment = PathSegment => ActionFn(6);
-                let __sym0 = __pop_Variant51(__symbols);
+                // __PathSegments = PathSegments => ActionFn(5);
+                let __sym0 = __pop_Variant50(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action6::<>(__sym0);
+                let __nt = super::__action5::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            246 => {
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -545179,16 +577767,6 @@
             _ => __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)>
@@ -545199,13 +577777,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -545289,16 +577867,6 @@
             _ => __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)>
@@ -545319,13 +577887,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -545469,63 +578037,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -545539,13 +578107,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -545559,43 +578127,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -545609,13 +578177,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -545649,13 +578217,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -545709,13 +578277,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -545750,1281 +578318,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -547033,59 +579763,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -547094,59 +579832,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -547155,216 +579901,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -547375,44 +580149,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -547421,180 +580201,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -547604,30 +580406,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -547637,30 +580443,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -547670,62 +580480,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -547733,65 +580551,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -547800,18 +580626,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -547822,18 +580650,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -547847,18 +580677,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -547870,18 +580702,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -547894,18 +580728,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -547916,18 +580752,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -547940,18 +580778,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -547962,18 +580802,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -547985,18 +580827,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -548006,77 +580850,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -548085,18 +580939,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -548105,36 +580961,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -548144,36 +581004,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -548184,18 +581048,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -548205,20 +581071,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -548227,20 +581095,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -548248,30 +581118,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -548280,108 +581154,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -548394,15 +581282,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -548414,154 +581304,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -548570,94 +581427,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -548666,75 +581535,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -548743,15 +581622,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -548760,15 +581641,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -548777,35 +581660,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -548817,18 +581704,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -548837,65 +581726,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -548903,80 +581800,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -548986,95 +581893,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -549082,79 +582037,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -549163,15 +582128,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -549180,15 +582147,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -549197,181 +582166,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -549381,602 +582374,680 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
-    fn __reduce245<
+    fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 120)
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
-pub(crate) use self::__parse__PathSegment::PathSegmentParser;
+pub use self::__parse__PathSegments::PathSegmentsParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::needless_lifetimes, clippy::type_complexity, clippy::needless_return, clippy::too_many_arguments, clippy::never_loop, clippy::match_single_binding, clippy::needless_raw_string_hashes)]
-mod __parse__PathSegments {
+mod __parse__ReturnStmt {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -550039,252 +583110,254 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        42, 0, 0, 8, 0, 9, 0, 10, 0, 0, 43, 0, 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 2
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 49, -120, -120, 50, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 51, 52, 0, 53, 54, 55, 0, -120, -120, -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 3
-        45, 0, 0, 10, 0, 11, 0, 12, 0, 0, 46, 0, 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,
+        0, 0, 57, -122, 0, 0, -122, 58, -122, -122, -122, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, -122, -122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, 0, -122, 0,
         // State 4
-        0, 52, -120, -120, 53, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 54, 55, 0, 56, 57, 58, 0, -120, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 59, -120, 0,
+        0, 0, 0, 60, 0, 0, -110, 0, 61, -110, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 63, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, -110, 0,
         // State 5
-        0, 0, 60, -122, 0, 0, -122, 61, -122, -122, -122, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, -122, -122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, 0, -122, 0,
+        0, -167, -167, -167, -167, 16, -167, -167, -167, -167, -167, 0, 17, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, 18, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 6
-        0, 0, 0, 63, 0, 0, -110, 0, 64, -110, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 66, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, -110, 0,
+        42, 0, 0, 8, 0, 19, 0, 10, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 7
-        0, -170, -170, -170, -170, 18, -170, -170, -170, -170, -170, 0, 3, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, 4, -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,
+        42, 0, 0, 8, 0, 19, 0, 10, 0, 0, 43, 0, 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, 20, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 8
-        45, 0, 0, 10, 0, 19, 0, 12, 0, 0, 46, 0, 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,
+        42, 0, 0, 8, 0, 9, 0, 10, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 9
-        45, 0, 0, 10, 0, 19, 0, 12, 0, 0, 46, 0, 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, 20, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
+        42, 0, 0, 8, 0, 19, 0, 10, 0, 0, 43, 0, 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
-        45, 0, 0, 10, 0, 11, 0, 12, 0, 0, 46, 0, 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,
+        0, 0, 0, 75, 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, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 11
-        45, 0, 0, 10, 0, 19, 0, 12, 0, 0, 46, 0, 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,
+        42, 0, 0, 8, 0, 19, 0, 10, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 12
-        0, 0, 0, 77, 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, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        42, 0, 0, 8, 0, 19, 0, 10, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 13
-        45, 0, 0, 10, 0, 19, 0, 12, 0, 0, 46, 0, 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,
+        42, 0, 0, 8, 0, 19, 0, 10, 0, 0, 43, 0, 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
-        45, 0, 0, 10, 0, 19, 0, 12, 0, 0, 46, 0, 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,
+        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 17, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 18, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 15
-        45, 0, 0, 10, 0, 19, 0, 12, 0, 0, 46, 0, 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,
+        42, 0, 0, 8, 0, 9, -80, 10, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 16
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 3, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 4, -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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 17
-        45, 0, 0, 10, 0, 11, -80, 12, 0, 0, 46, 0, 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,
+        42, 0, 0, 8, 0, 9, 0, 10, 0, 0, 43, 0, 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
-        45, 0, 0, 10, 0, 11, 0, 12, 0, 0, 46, 0, 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,
+        42, 0, 0, 8, 0, 9, 0, 10, 0, 0, 43, 0, 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 19
-        45, 0, 0, 10, 0, 19, 0, 12, 0, 0, 46, 0, 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,
+        42, 0, 0, 8, 0, 19, 0, 10, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 20
-        0, -170, -170, -170, -170, 18, -170, -170, -170, -170, -170, 0, 3, 0, -170, 0, 84, 0, -170, -170, 0, -170, -170, -170, 4, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        0, -167, -167, -167, -167, 16, -167, -167, -167, -167, -167, 0, 17, 0, -167, 0, 85, 0, -167, -167, 0, -167, -167, -167, 18, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 21
-        0, 0, 0, 77, 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, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 75, 0, 0, 0, 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, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 22
-        0, 52, -119, -119, 53, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, 54, 55, 0, 56, 57, 58, 0, -119, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 59, -119, 0,
+        0, 49, -119, -119, 50, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, 51, 52, 0, 53, 54, 55, 0, -119, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 56, -119, 0,
         // State 23
-        0, 0, 60, -121, 0, 0, -121, 61, -121, -121, -121, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, -121, 0,
+        0, 0, 57, -121, 0, 0, -121, 58, -121, -121, -121, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, -121, 0,
         // State 24
-        45, 0, 0, 10, 0, 11, -82, 12, 0, 0, 46, 0, 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,
+        42, 0, 0, 8, 0, 9, -82, 10, 0, 0, 43, 0, 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 25
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
         // State 26
-        0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 27
-        0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 28
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 29
-        0, 0, 0, 77, 0, 0, 0, 78, 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, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 75, 0, 0, 0, 76, 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, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 30
-        0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 31
-        45, 0, 0, 10, 0, 11, 0, 12, 0, 0, 46, 0, 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,
+        42, 0, 0, 8, 0, 9, 0, 10, 0, 0, 43, 0, 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 32
-        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, -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,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 33
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, 0, -174, 0, 0, 0, -174, -174, 0, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
         // State 34
-        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, -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,
+        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, -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 35
-        0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, 0, -139, -139, -139, 0, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 0,
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, -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 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, 51, 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, -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, -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, -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, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
+        0, -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, -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 38
-        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, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
+        0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
         // State 39
-        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, -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,
+        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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
         // State 40
-        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, -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,
+        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, -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 41
-        0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
+        -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, 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, -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, -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,
+        -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, 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,
         // State 43
-        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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        0, -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, -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 44
-        -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, 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,
+        0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, 0, -139, -139, -139, 0, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 0,
         // State 45
-        -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, 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,
+        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, -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,
         // State 46
         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, -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, -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, -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,
+        -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, 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 48
-        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, -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,
+        -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
         // State 49
-        -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, 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,
+        -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, 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 50
-        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, -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,
+        -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, 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 51
-        -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
+        -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, 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 52
-        -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, 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,
+        -62, 0, 0, -62, 0, -62, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, -62,
         // State 53
-        -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, 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,
+        -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, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 54
-        -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, 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,
+        -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, 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 55
-        -62, 0, 0, -62, 0, -62, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, -62,
+        -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, 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 56
-        -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, 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,
+        -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, 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 57
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        -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, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
         // State 58
-        -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, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 59
-        -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, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 60
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        -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, 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 61
-        -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, 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,
+        -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, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
         // State 62
-        -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, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 63
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        -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, 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 64
-        -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, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        0, -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, -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 65
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
         // State 66
-        -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, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        0, -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, -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
-        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, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
+        0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 68
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,
         // State 69
-        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, 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, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 70
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 71
-        0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, -199, 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, -199, 0,
         // State 72
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 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, -108, 0,
         // State 73
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, -200, 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, -200, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 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, -108, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 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, -108, 0,
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 75
-        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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 76
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, -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 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, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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 78
-        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, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
+        0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 79
-        0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -79, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 80
-        0, 0, 0, 0, 0, 0, -79, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -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, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
         // State 81
-        0, -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, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 82
-        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, -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, -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, -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 83
-        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, 0,
+        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, -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,
         // State 84
-        0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 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, -109, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 85
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
+        0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 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, -109, 0,
         // State 86
-        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, 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, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -200, 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, -200, 0,
         // State 87
-        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, 0, -207, 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, 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, -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, 0, -208, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 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, 0, -209, 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, 0, -207, 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, -81, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -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, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 91
-        0, -125, -125, -125, -125, 0, -125, -125, -125, -125, -125, 0, 0, 0, -125, 0, 0, 0, -125, -125, 0, -125, -125, -125, 0, -125, -125, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, -125, -125, 0,
+        0, 0, 0, 0, 0, 0, -81, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 92
-        -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
+        0, -125, -125, -125, -125, 0, -125, -125, -125, -125, -125, 0, 0, 0, -125, 0, 0, 0, -125, -125, 0, -125, -125, -125, 0, -125, -125, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, -125, -125, 0,
         // State 93
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0,
+        -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
         // State 94
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, -169, -169, -169, -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 95
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0,
         // State 96
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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,
         // State 97
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -95, 0,
         // State 98
-        -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 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, 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,
         // State 99
-        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, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 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,
         // State 100
-        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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, -25,
         // State 101
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 102
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 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, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 103
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -188, 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, -188, 0,
         // State 104
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
         // State 105
-        0, 0, 0, -54, 0, 0, 0, -54, 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, -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, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 106
-        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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
         // State 107
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0,
+        0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 108
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
         // State 109
-        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, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0,
         // State 110
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
         // State 111
-        0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
         // State 112
-        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 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, -203, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
+        // State 113
+        0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 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, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -550293,15 +583366,15 @@
         // State 0
         0,
         // State 1
-        -248,
+        -175,
         // State 2
-        0,
+        -120,
         // State 3
-        0,
+        -122,
         // State 4
-        0,
+        -110,
         // State 5
-        0,
+        -167,
         // State 6
         0,
         // State 7
@@ -550319,7 +583392,7 @@
         // State 13
         0,
         // State 14
-        0,
+        -166,
         // State 15
         0,
         // State 16
@@ -550335,9 +583408,9 @@
         // State 21
         0,
         // State 22
-        0,
+        -119,
         // State 23
-        0,
+        -121,
         // State 24
         0,
         // State 25
@@ -550355,35 +583428,35 @@
         // State 31
         0,
         // State 32
-        -173,
+        -247,
         // State 33
         -174,
         // State 34
-        -171,
+        -116,
         // State 35
-        -139,
+        -118,
         // State 36
-        0,
+        -196,
         // State 37
-        0,
+        -219,
         // State 38
-        0,
+        -111,
         // State 39
-        0,
+        -194,
         // State 40
-        0,
+        -195,
         // State 41
         0,
         // State 42
         0,
         // State 43
-        0,
+        -217,
         // State 44
-        0,
+        -139,
         // State 45
-        0,
+        -216,
         // State 46
-        0,
+        -218,
         // State 47
         0,
         // State 48
@@ -550391,7 +583464,7 @@
         // State 49
         0,
         // State 50
-        -172,
+        0,
         // State 51
         0,
         // State 52
@@ -550419,11 +583492,11 @@
         // State 63
         0,
         // State 64
-        0,
+        -170,
         // State 65
-        0,
+        -115,
         // State 66
-        0,
+        -113,
         // State 67
         0,
         // State 68
@@ -550431,11 +583504,11 @@
         // State 69
         0,
         // State 70
-        0,
+        -114,
         // State 71
-        0,
+        -199,
         // State 72
-        0,
+        -108,
         // State 73
         0,
         // State 74
@@ -550443,27 +583516,27 @@
         // State 75
         0,
         // State 76
-        0,
+        -117,
         // State 77
-        0,
+        -171,
         // State 78
         0,
         // State 79
         0,
         // State 80
-        0,
+        -168,
         // State 81
         0,
         // State 82
-        0,
+        -112,
         // State 83
-        0,
+        -193,
         // State 84
         0,
         // State 85
-        0,
+        -109,
         // State 86
-        0,
+        -200,
         // State 87
         0,
         // State 88
@@ -550475,11 +583548,11 @@
         // State 91
         0,
         // State 92
-        0,
+        -125,
         // State 93
         0,
         // State 94
-        0,
+        -169,
         // State 95
         0,
         // State 96
@@ -550503,7 +583576,7 @@
         // State 105
         0,
         // State 106
-        0,
+        -201,
         // State 107
         0,
         // State 108
@@ -550516,88 +583589,91 @@
         0,
         // State 112
         0,
+        // State 113
+        0,
+        // State 114
+        -202,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
             14 => 24,
             29 => 28,
             32 => 29,
-            36 => 13,
-            37 => 14,
-            38 => 15,
-            40 => 79,
-            44 => 93,
+            36 => 11,
+            37 => 12,
+            38 => 13,
+            40 => 78,
+            44 => 95,
             45 => match state {
-                27 => 99,
-                30 => 106,
-                _ => 96,
+                27 => 101,
+                30 => 108,
+                _ => 98,
             },
             48 => match state {
-                3 => 36,
-                17 => 80,
-                24 => 90,
-                31 => 109,
-                _ => 69,
+                1 => 33,
+                15 => 79,
+                17 => 81,
+                24 => 91,
+                31 => 111,
+                _ => 67,
             },
-            49 => 37,
+            49 => 34,
             50 => match state {
-                8 => 67,
-                9 => 68,
-                11 => 72,
-                13 => 78,
-                19 => 81,
-                _ => 38,
+                6 => 65,
+                7 => 66,
+                9 => 70,
+                11 => 76,
+                19 => 82,
+                _ => 35,
             },
             51 => match state {
-                14 => 22,
-                _ => 4,
+                12 => 22,
+                _ => 2,
             },
             52 => match state {
-                15 => 23,
-                _ => 5,
+                13 => 23,
+                _ => 3,
             },
-            53 => 6,
-            55 => 39,
+            53 => 4,
+            55 => 36,
             60 => match state {
-                10 | 31 => 20,
-                2 => 34,
-                12 | 26..=27 | 29..=30 => 73,
-                21 => 85,
-                25 | 28 => 94,
-                _ => 7,
-            },
-            62 => 70,
-            74 => 40,
-            75 => match state {
-                1 | 16 => 33,
-                _ => 32,
-            },
-            76 => match state {
-                0 => 1,
-                _ => 16,
+                8 | 31 => 20,
+                10 | 26..=27 | 29..=30 => 71,
+                16 => 80,
+                21 => 86,
+                25 | 28 => 96,
+                _ => 5,
             },
-            83 => match state {
-                31 => 110,
-                _ => 71,
+            62 => 68,
+            72 => 37,
+            73 => match state {
+                14 => 77,
+                _ => 64,
             },
-            84 => match state {
-                28 => 100,
-                _ => 95,
+            74 => 14,
+            76 => 32,
+            81 => match state {
+                31 => 112,
+                _ => 69,
             },
-            86 => 41,
-            87 => 42,
-            88 => match state {
-                12 => 74,
-                29 => 103,
+            82 => match state {
+                28 => 102,
                 _ => 97,
             },
-            90 => match state {
-                21 => 86,
-                _ => 75,
+            84 => 38,
+            85 => 39,
+            87 => match state {
+                10 => 72,
+                29 => 105,
+                _ => 99,
             },
-            92 => 21,
-            93 => 8,
-            94 => 43,
+            89 => match state {
+                21 => 87,
+                _ => 73,
+            },
+            91 => 21,
+            92 => 6,
+            93 => 40,
             _ => 0,
         }
     }
@@ -550667,25 +583743,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -550693,7 +583771,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = Vec<ast::PathSegment>;
+        type Success = ast::ReturnStmt;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -550711,7 +583789,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -550735,7 +583813,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -550743,7 +583821,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -550767,22 +583845,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -550843,10 +583923,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -550867,10 +583948,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -551847,25 +584929,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -551877,14 +584959,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -551896,19 +584978,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -551920,109 +585002,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -552034,31 +585116,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -552069,68 +585151,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -552141,26 +585223,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -552172,30 +585254,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -552349,13 +585431,13 @@
                     nonterminal_produced: 120,
                 }
             }
-            246 => {
+            246 => __state_machine::SimulatedReduce::Accept,
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 121,
+                    nonterminal_produced: 122,
                 }
             }
-            247 => __state_machine::SimulatedReduce::Accept,
             248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -552428,52 +585510,50 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub struct PathSegmentsParser {
+    pub(crate) struct ReturnStmtParser {
         _priv: (),
     }
 
-    impl Default for PathSegmentsParser { fn default() -> Self { Self::new() } }
-    impl PathSegmentsParser {
-        pub fn new() -> PathSegmentsParser {
-            PathSegmentsParser {
+    impl Default for ReturnStmtParser { fn default() -> Self { Self::new() } }
+    impl ReturnStmtParser {
+        pub(crate) fn new() -> ReturnStmtParser {
+            ReturnStmtParser {
                 _priv: (),
             }
         }
 
         #[allow(dead_code)]
-        pub fn parse<
-            __TOKEN: __ToTriple<>,
+        pub(crate) fn parse<
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
-        ) -> Result<Vec<ast::PathSegment>, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::ReturnStmt, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -552487,7 +585567,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -552501,802 +585581,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __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::PathSegment>,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> Option<Result<ast::ReturnStmt,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            247 => {
-                // __PathSegments = PathSegments => ActionFn(5);
+                // __ReturnStmt = ReturnStmt => ActionFn(12);
                 let __sym0 = __pop_Variant52(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action5::<>(__sym0);
+                let __nt = super::__action12::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            247 => {
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -553391,16 +586470,6 @@
             _ => __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)>
@@ -553411,13 +586480,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -553501,16 +586570,6 @@
             _ => __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)>
@@ -553531,13 +586590,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -553681,63 +586740,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -553751,13 +586810,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -553771,43 +586830,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -553821,13 +586880,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -553861,13 +586920,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -553921,13 +586980,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -553962,1281 +587021,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -555245,59 +588466,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -555306,59 +588535,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -555367,216 +588604,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -555587,44 +588852,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -555633,180 +588904,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -555816,30 +589109,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -555849,30 +589146,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -555882,62 +589183,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -555945,65 +589254,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -556012,18 +589329,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -556034,18 +589353,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -556059,18 +589380,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -556082,18 +589405,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -556106,18 +589431,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -556128,18 +589455,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -556152,18 +589481,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -556174,18 +589505,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -556197,18 +589530,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -556218,77 +589553,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -556297,18 +589642,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -556317,36 +589664,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -556356,36 +589707,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -556396,18 +589751,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -556417,20 +589774,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -556439,20 +589798,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -556460,30 +589821,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -556492,108 +589857,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -556606,15 +589985,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -556626,154 +590007,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -556782,94 +590130,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -556878,75 +590238,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -556955,15 +590325,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -556972,15 +590344,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -556989,35 +590363,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -557029,18 +590407,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -557049,65 +590429,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -557115,80 +590503,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -557198,95 +590596,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -557294,79 +590740,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -557375,15 +590831,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -557392,15 +590850,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -557409,181 +590869,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -557593,602 +591077,680 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
-    fn __reduce246<
+    fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 121)
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
-pub use self::__parse__PathSegments::PathSegmentsParser;
+pub(crate) use self::__parse__ReturnStmt::ReturnStmtParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::needless_lifetimes, clippy::type_complexity, clippy::needless_return, clippy::too_many_arguments, clippy::never_loop, clippy::match_single_binding, clippy::needless_raw_string_hashes)]
-mod __parse__ReturnStmt {
+mod __parse__Statement {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -558251,256 +591813,370 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 65, 5, 0, 0, 6, 0, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0,
         // State 1
-        42, 0, 0, 8, 0, 9, 0, 10, 0, 0, 43, 0, 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,
+        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, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 2
-        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, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 56, -120, 0,
+        0, -167, -167, -167, -167, 11, -167, -167, -167, -167, -167, 0, 12, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, 13, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
         // State 3
-        0, 0, 57, -122, 0, 0, -122, 58, -122, -122, -122, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, -122, -122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, 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, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 4
-        0, 0, 0, 60, 0, 0, -110, 0, 61, -110, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 63, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, -110, 0,
+        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
         // State 5
-        0, -170, -170, -170, -170, 16, -170, -170, -170, -170, -170, 0, 17, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, 18, -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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 6
-        42, 0, 0, 8, 0, 19, 0, 10, 0, 0, 43, 0, 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,
+        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
         // State 7
-        42, 0, 0, 8, 0, 19, 0, 10, 0, 0, 43, 0, 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, 20, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
+        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
         // State 8
-        42, 0, 0, 8, 0, 9, 0, 10, 0, 0, 43, 0, 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,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, -167, 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,
         // State 9
-        42, 0, 0, 8, 0, 19, 0, 10, 0, 0, 43, 0, 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,
+        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 12, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, 13, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
         // State 10
-        0, 0, 0, 75, 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, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        81, 0, 0, 20, 0, 21, -80, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
         // State 11
-        42, 0, 0, 8, 0, 19, 0, 10, 0, 0, 43, 0, 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,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 12
-        42, 0, 0, 8, 0, 19, 0, 10, 0, 0, 43, 0, 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,
+        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
         // State 13
-        42, 0, 0, 8, 0, 19, 0, 10, 0, 0, 43, 0, 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,
+        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
         // State 14
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 17, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 18, -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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,
         // State 15
-        42, 0, 0, 8, 0, 9, -80, 10, 0, 0, 43, 0, 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,
+        0, 98, -120, -120, 99, 0, -120, -120, -120, -120, -120, 0, 0, -120, -120, 0, 0, -120, 100, 101, 0, 102, 103, 104, 0, -120, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, -120, 105, -120, 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, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 106, -122, 0, 0, -122, 107, -122, -122, -122, 0, 0, -122, 108, 0, 0, -122, 0, 0, 0, 0, 0, 0, 0, -122, -122, -122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, -122, 0, -122, 0,
         // State 17
-        42, 0, 0, 8, 0, 9, 0, 10, 0, 0, 43, 0, 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,
+        0, 0, 0, 109, 0, 0, -110, 0, 110, -110, 111, 0, 0, -110, 0, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, 112, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 113, 0, -110, 0,
         // State 18
-        42, 0, 0, 8, 0, 9, 0, 10, 0, 0, 43, 0, 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,
+        81, 0, 0, 20, 0, 34, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
         // State 19
-        42, 0, 0, 8, 0, 19, 0, 10, 0, 0, 43, 0, 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,
+        81, 0, 0, 20, 0, 34, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 35, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
         // State 20
-        0, -170, -170, -170, -170, 16, -170, -170, -170, -170, -170, 0, 17, 0, -170, 0, 85, 0, -170, -170, 0, -170, -170, -170, 18, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
         // State 21
-        0, 0, 0, 75, 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, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        81, 0, 0, 20, 0, 34, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
         // State 22
-        0, 49, -119, -119, 50, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, 51, 52, 0, 53, 54, 55, 0, -119, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 56, -119, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 23
-        0, 0, 57, -121, 0, 0, -121, 58, -121, -121, -121, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 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, 29, 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,
         // State 24
-        42, 0, 0, 8, 0, 9, -82, 10, 0, 0, 43, 0, 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,
+        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
         // 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, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
+        81, 0, 0, 20, 0, 21, -82, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
         // State 26
-        0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -167, -167, -167, -167, 11, -167, -167, -167, -167, -167, 0, 12, 0, -167, 0, 127, -167, -167, -167, 0, -167, -167, -167, 13, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 27
-        0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
         // State 28
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 131, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 29
-        0, 0, 0, 75, 0, 0, 0, 76, 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, 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, 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, 4, 65, 5, 0, 0, 6, 0, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0,
         // State 30
-        0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        81, 0, 0, 20, 0, 34, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
         // State 31
-        42, 0, 0, 8, 0, 9, 0, 10, 0, 0, 43, 0, 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,
+        81, 0, 0, 20, 0, 34, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
         // 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        81, 0, 0, 20, 0, 34, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
         // 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, 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,
+        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
         // State 34
-        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, -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,
+        81, 0, 0, 20, 0, 34, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
         // State 35
-        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, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
+        0, 0, 0, 131, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 36
-        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, -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,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
         // State 37
-        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, -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,
+        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, 29, 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,
         // State 38
-        0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,
         // State 39
-        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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, 0, 0, 131, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 40
-        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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        0, 0, 0, 0, 0, 0, 0, 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, 4, 65, 5, 0, 0, 6, 0, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 151, 0,
         // State 41
-        -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, 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,
+        0, 98, -119, -119, 99, 0, -119, -119, -119, -119, -119, 0, 0, -119, -119, 0, 0, -119, 100, 101, 0, 102, 103, 104, 0, -119, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, 105, -119, 0,
         // State 42
-        -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, 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,
+        0, 0, 106, -121, 0, 0, -121, 107, -121, -121, -121, 0, 0, -121, 108, 0, 0, -121, 0, 0, 0, 0, 0, 0, 0, -121, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, 0, -121, 0,
         // State 43
-        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, -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,
+        0, 0, 0, 131, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 44
-        0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, 0, -139, -139, -139, 0, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 0,
+        0, 0, 0, 131, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 45
-        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, -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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 46
-        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, -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,
+        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
         // State 47
-        -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, 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,
+        0, 0, 0, 131, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 48
-        -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
+        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
         // State 49
-        -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, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        0, 0, 0, 131, 0, 0, 0, 132, 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, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 50
-        -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, 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,
+        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
         // State 51
-        -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, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 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,
         // State 52
-        -62, 0, 0, -62, 0, -62, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, -62,
+        0, 0, 0, 131, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 53
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
         // State 54
-        -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, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
         // State 55
-        -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, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 56
-        -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, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        0, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 0,
         // State 57
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        0, 0, 0, 0, 0, 0, 0, -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, -176, -176, -176, 0, 0, -176, 0, 0, 0, 0, -176, 0, 0, 0, -176, 0, 0, 0, -176, 0,
         // State 58
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 59
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 60
-        -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, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 61
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 62
-        -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, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        0, 0, 0, 0, 0, 0, 0, -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, -177, -177, -177, 0, 0, -177, 0, 0, 0, 0, -177, 0, 0, 0, -177, 0, 0, 0, -177, 0,
         // State 63
-        -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, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        0, 0, 0, 0, 0, 0, 0, -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, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 64
-        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, -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,
+        0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 0,
         // State 65
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
         // 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, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        0, 0, 0, 0, 0, 0, 0, -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, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 67
-        0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
         // State 68
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
         // State 69
-        0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, -170, -170, 0, 0, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -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 70
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, -200, 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, -200, 0,
+        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
         // State 72
-        0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 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, -108, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 73
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, -116, -116, 0, 0, -116, -116, -116, 0, -116, -116, -116, 0, -116, -116, -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 74
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, -118, -118, 0, 0, -118, -118, -118, 0, -118, -118, -118, 0, -118, -118, -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 75
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, -196, -196, 0, 0, -196, -196, -196, 0, -196, -196, -196, 0, -196, -196, -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 76
-        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, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
+        0, -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, -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 77
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, 0, -174, 0, 0, 0, -174, -174, 0, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, 0,
+        0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, -111, -111, 0, 0, -111, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, -111, 0,
         // State 78
-        0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, -194, 0,
         // State 79
-        0, 0, 0, 0, 0, 0, -79, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -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, -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 80
-        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, -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,
+        -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, 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 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, 95, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -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, 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,
         // State 82
-        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, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
+        0, -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, -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 83
-        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, -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, -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, -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,
         // State 84
-        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, 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, -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 85
-        0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 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, -109, 0,
+        -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, 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 86
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 87
-        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, 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, -174, 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,
         // State 88
-        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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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 89
-        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, 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, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // 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, 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, -79, 0, 0, 125, 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,
         // State 91
-        0, 0, 0, 0, 0, 0, -81, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -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, -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 92
-        0, -125, -125, -125, -125, 0, -125, -125, -125, -125, -125, 0, 0, 0, -125, 0, 0, 0, -125, -125, 0, -125, -125, -125, 0, -125, -125, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, -125, -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, 126, 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,
         // State 93
-        -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 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, -58, 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,
         // State 94
-        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, -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,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
         // State 95
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 96
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, -145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, -145, -145, -145, 0, 0, -145, 0, 0, 0, 0, -145, 0, 0, 0, -145, 0, 0, 0, -145, 0,
         // State 97
-        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, 0, -95, 0,
+        -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
         // State 98
-        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, 0,
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 99
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 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,
+        -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, 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 100
-        -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, -25,
+        -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, 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 101
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -62, 0, 0, -62, 0, -62, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, -62,
         // State 102
-        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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 103
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 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, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 105
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -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, 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 106
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 107
-        0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 108
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        -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, 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 109
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0,
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 110
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 111
-        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, 11, 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,
+        -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, 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 112
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 113
-        0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, -115, -115, 0, 0, -115, -115, -115, 0, -115, -115, -115, 0, -115, -115, -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 114
-        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 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, -203, 0,
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, -113, -113, 0, 0, -113, -113, -113, 0, -113, -113, -113, 0, -113, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, -113, 0,
+        // State 115
+        0, 0, 0, 0, 0, 0, 136, 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,
+        // State 116
+        0, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 117
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, -114, -114, 0, 0, -114, -114, -114, 0, -114, -114, -114, 0, -114, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, -114, 0,
+        // State 118
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 119
+        0, 0, 0, 0, 0, 0, 0, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 0, 0, -220, 0, 0, 0, 0, -220, 0, 0, 0, -220, 0, 0, 0, -220, 0,
+        // State 120
+        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, 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,
+        // State 121
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 122
+        0, 0, 0, 0, 0, 0, -81, 0, 0, 139, 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,
+        // State 123
+        0, -125, -125, -125, -125, 0, -125, -125, -125, -125, -125, 0, 0, -125, -125, 0, 0, -125, -125, -125, 0, -125, -125, -125, 0, -125, -125, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, -125, -125, -125, 0,
+        // State 124
+        -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
+        // State 125
+        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, -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 126
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 127
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, -199, 0, 0, 0, -199, 48, 0, -199, 0, -199, 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, -199, 0, 0, -199, 0,
+        // State 128
+        0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, -108, 0, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, -108, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0,
+        // State 129
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 130
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 131
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 132
+        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, -158, -158, -158, 0, 0, -158, 0, 0, 0, 0, -158, 0, 0, 0, -158, 0, 0, 0, -158, 0,
+        // State 133
+        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, -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 134
+        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, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, -112, 0,
+        // State 135
+        0, -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, -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,
+        // State 136
+        0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, -109, 0, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, -109, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0,
+        // State 137
+        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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 138
+        -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, -25,
+        // State 139
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0,
+        // State 140
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 141
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0,
+        // State 142
+        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, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
+        // State 143
+        0, 0, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, -144, -144, 0, 0, -144, 0, 0, 0, 0, -144, 0, 0, 0, -144, 0, 0, 0, -144, 0,
+        // State 144
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, -200, 0, 0, 0, -200, 53, 0, -200, 0, -200, 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, -200, 0, 0, -200, 0,
+        // State 145
+        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 146
+        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, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 147
+        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, 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, -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, 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, 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, -159, -159, -159, 0, 0, -159, 0, 0, 0, 0, -159, 0, 0, 0, -159, 0, 0, 0, -159, 0,
+        // State 150
+        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, -78, 0, 0, -78, -78, -78, 0, 0, -78, 0, 0, 0, 0, -78, 0, 0, 0, -78, 0, 0, 0, -78, 0,
+        // State 151
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 152
+        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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 153
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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,
+        // State 154
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        // State 155
+        0, 0, 0, 0, 0, 0, -188, 0, 0, -188, 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, -188, 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, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 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, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 158
+        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, 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,
+        // State 159
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 160
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0,
+        // State 162
+        0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 163
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
+        // State 164
+        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, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
+        // State 165
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
+        // State 166
+        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, -130, -130, -130, 0, 0, -130, 0, 0, 0, 0, -130, 0, 0, 0, -130, 0, 0, 0, -130, 0,
+        // State 167
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, -201, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0,
+        // State 168
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 169
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        // State 170
+        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, 0,
+        // State 171
+        0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 172
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, -202, 0, 0, 0, -202, 0, 0, -202, 0, -202, 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, -202, 0, 0, -202, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -558509,15 +592185,15 @@
         // State 0
         0,
         // State 1
-        -178,
+        0,
         // State 2
-        -120,
+        0,
         // State 3
-        -122,
+        0,
         // State 4
-        -110,
+        0,
         // State 5
-        -170,
+        0,
         // State 6
         0,
         // State 7
@@ -558535,7 +592211,7 @@
         // State 13
         0,
         // State 14
-        -169,
+        0,
         // State 15
         0,
         // State 16
@@ -558551,9 +592227,9 @@
         // State 21
         0,
         // State 22
-        -119,
+        0,
         // State 23
-        -121,
+        0,
         // State 24
         0,
         // State 25
@@ -558571,35 +592247,35 @@
         // State 31
         0,
         // State 32
-        -249,
+        0,
         // State 33
-        -177,
+        0,
         // State 34
-        -116,
+        0,
         // State 35
-        -118,
+        0,
         // State 36
-        -199,
+        0,
         // State 37
-        -220,
+        0,
         // State 38
-        -111,
+        0,
         // State 39
-        -197,
+        0,
         // State 40
-        -198,
+        0,
         // State 41
         0,
         // State 42
         0,
         // State 43
-        -218,
+        0,
         // State 44
-        -139,
+        0,
         // State 45
-        -217,
+        0,
         // State 46
-        -219,
+        0,
         // State 47
         0,
         // State 48
@@ -558619,9 +592295,9 @@
         // State 55
         0,
         // State 56
-        0,
+        -178,
         // State 57
-        0,
+        -176,
         // State 58
         0,
         // State 59
@@ -558629,29 +592305,29 @@
         // State 60
         0,
         // State 61
-        0,
+        -248,
         // State 62
-        0,
+        -177,
         // State 63
         0,
         // State 64
-        -173,
+        0,
         // State 65
-        -115,
+        0,
         // State 66
-        -113,
-        // State 67
         0,
+        // State 67
+        -180,
         // State 68
-        0,
+        -181,
         // State 69
         0,
         // State 70
-        -114,
+        -179,
         // State 71
-        -200,
+        -182,
         // State 72
-        -108,
+        0,
         // State 73
         0,
         // State 74
@@ -558659,27 +592335,27 @@
         // State 75
         0,
         // State 76
-        -117,
+        0,
         // State 77
-        -174,
+        0,
         // State 78
         0,
         // State 79
         0,
         // State 80
-        -171,
+        0,
         // State 81
         0,
         // State 82
-        -112,
+        0,
         // State 83
-        -196,
+        0,
         // State 84
         0,
         // State 85
-        -109,
+        0,
         // State 86
-        -201,
+        0,
         // State 87
         0,
         // State 88
@@ -558691,15 +592367,15 @@
         // State 91
         0,
         // State 92
-        -125,
+        0,
         // State 93
         0,
         // State 94
-        -172,
+        0,
         // State 95
         0,
         // State 96
-        0,
+        -145,
         // State 97
         0,
         // State 98
@@ -558719,7 +592395,7 @@
         // State 105
         0,
         // State 106
-        -202,
+        0,
         // State 107
         0,
         // State 108
@@ -558735,88 +592411,248 @@
         // State 113
         0,
         // State 114
-        -203,
+        0,
+        // State 115
+        0,
+        // State 116
+        0,
+        // State 117
+        0,
+        // State 118
+        0,
+        // State 119
+        -220,
+        // State 120
+        0,
+        // State 121
+        0,
+        // State 122
+        0,
+        // State 123
+        0,
+        // State 124
+        0,
+        // State 125
+        0,
+        // State 126
+        0,
+        // State 127
+        0,
+        // State 128
+        0,
+        // State 129
+        0,
+        // State 130
+        0,
+        // State 131
+        0,
+        // State 132
+        0,
+        // State 133
+        0,
+        // State 134
+        0,
+        // State 135
+        0,
+        // State 136
+        0,
+        // State 137
+        0,
+        // State 138
+        0,
+        // State 139
+        0,
+        // State 140
+        0,
+        // State 141
+        0,
+        // State 142
+        -129,
+        // State 143
+        -144,
+        // State 144
+        0,
+        // State 145
+        0,
+        // State 146
+        0,
+        // State 147
+        0,
+        // State 148
+        0,
+        // State 149
+        0,
+        // State 150
+        -78,
+        // 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
+        -130,
+        // State 167
+        0,
+        // State 168
+        0,
+        // State 169
+        0,
+        // State 170
+        0,
+        // State 171
+        0,
+        // State 172
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            14 => 24,
-            29 => 28,
-            32 => 29,
-            36 => 11,
-            37 => 12,
-            38 => 13,
-            40 => 78,
-            44 => 95,
+            1 => 1,
+            14 => 25,
+            29 => 45,
+            32 => 49,
+            35 => 54,
+            36 => 30,
+            37 => 31,
+            38 => 32,
+            39 => match state {
+                23 => 119,
+                37 => 142,
+                38 => 143,
+                51 => 166,
+                _ => 96,
+            },
+            40 => 89,
+            44 => 139,
             45 => match state {
-                27 => 101,
-                30 => 108,
-                _ => 98,
+                47 => 157,
+                52 => 168,
+                _ => 152,
             },
             48 => match state {
-                1 => 33,
-                15 => 79,
-                17 => 81,
-                24 => 91,
-                31 => 111,
-                _ => 67,
+                4 => 14,
+                7 => 23,
+                27 => 37,
+                46 => 51,
+                6 => 87,
+                10 => 90,
+                12 => 92,
+                13 => 93,
+                24 => 120,
+                25 => 122,
+                48 => 158,
+                50 => 164,
+                53 => 169,
+                _ => 115,
             },
-            49 => 34,
+            49 => 73,
             50 => match state {
-                6 => 65,
-                7 => 66,
-                9 => 70,
-                11 => 76,
-                19 => 82,
-                _ => 35,
+                18 => 113,
+                19 => 114,
+                21 => 117,
+                30 => 133,
+                34 => 134,
+                _ => 74,
             },
             51 => match state {
-                12 => 22,
-                _ => 2,
+                31 => 41,
+                _ => 15,
             },
             52 => match state {
-                13 => 23,
-                _ => 3,
+                32 => 42,
+                _ => 16,
             },
-            53 => 4,
-            55 => 36,
+            53 => 17,
+            55 => match state {
+                0 | 29 | 40 => 55,
+                _ => 75,
+            },
+            58 => 56,
             60 => match state {
-                8 | 31 => 20,
-                10 | 26..=27 | 29..=30 => 71,
-                16 => 80,
-                21 => 86,
-                25 | 28 => 96,
-                _ => 5,
+                1 => 8,
+                13 | 20 | 24 | 48 | 50 | 53 => 26,
+                3 => 72,
+                5 => 86,
+                11 => 91,
+                22 => 118,
+                28 | 35 | 43..=44 | 47 | 49 | 52 => 127,
+                36 | 45 => 140,
+                39 => 144,
+                _ => 2,
             },
-            62 => 68,
-            74 => 37,
-            75 => match state {
-                14 => 77,
-                _ => 64,
+            62 => 94,
+            63 => 57,
+            65 => 58,
+            69 => 40,
+            72 => match state {
+                0 | 29 | 40 => 59,
+                1 => 65,
+                _ => 76,
             },
-            76 => 14,
-            78 => 32,
-            83 => match state {
-                31 => 112,
+            73 => match state {
+                9 => 88,
                 _ => 69,
             },
-            84 => match state {
-                28 => 102,
-                _ => 97,
+            74 => 9,
+            76 => 60,
+            77 => match state {
+                29 => 132,
+                40 => 149,
+                _ => 61,
             },
-            86 => 38,
-            87 => 39,
-            88 => match state {
-                10 => 72,
-                29 => 105,
-                _ => 99,
+            81 => match state {
+                20 => 116,
+                24 => 121,
+                48 => 159,
+                50 => 165,
+                53 => 170,
+                _ => 95,
             },
-            90 => match state {
-                21 => 87,
-                _ => 73,
+            82 => match state {
+                45 => 154,
+                _ => 141,
+            },
+            84 => 77,
+            85 => 78,
+            87 => match state {
+                28 => 128,
+                35 => 137,
+                43 => 151,
+                49 => 160,
+                _ => 153,
             },
-            92 => 21,
-            93 => 6,
-            94 => 40,
+            89 => match state {
+                39 => 145,
+                _ => 129,
+            },
+            91 => 39,
+            92 => 18,
+            93 => 79,
+            94 => 62,
             _ => 0,
         }
     }
@@ -558886,25 +592722,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -558912,7 +592750,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::ReturnStmt;
+        type Success = ast::Statement;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -558930,7 +592768,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -558954,7 +592792,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -558962,7 +592800,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -558986,22 +592824,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -559062,10 +592902,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -559086,10 +592927,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -560066,25 +593908,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -560096,14 +593938,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -560115,19 +593957,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -560139,109 +593981,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -560253,31 +594095,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -560288,68 +594130,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -560360,26 +594202,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -560391,30 +594233,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -560574,13 +594416,13 @@
                     nonterminal_produced: 121,
                 }
             }
-            247 => {
+            247 => __state_machine::SimulatedReduce::Accept,
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 122,
+                    nonterminal_produced: 123,
                 }
             }
-            248 => __state_machine::SimulatedReduce::Accept,
             249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -560647,52 +594489,50 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct ReturnStmtParser {
+    pub(crate) struct StatementParser {
         _priv: (),
     }
 
-    impl Default for ReturnStmtParser { fn default() -> Self { Self::new() } }
-    impl ReturnStmtParser {
-        pub(crate) fn new() -> ReturnStmtParser {
-            ReturnStmtParser {
+    impl Default for StatementParser { fn default() -> Self { Self::new() } }
+    impl StatementParser {
+        pub(crate) fn new() -> StatementParser {
+            StatementParser {
                 _priv: (),
             }
         }
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
-        ) -> Result<ast::ReturnStmt, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::Statement, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -560706,7 +594546,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -560720,802 +594560,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::ReturnStmt,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> Option<Result<ast::Statement,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            248 => {
-                // __ReturnStmt = ReturnStmt => ActionFn(12);
-                let __sym0 = __pop_Variant54(__symbols);
+                // __Statement = Statement => ActionFn(8);
+                let __sym0 = __pop_Variant53(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action12::<>(__sym0);
+                let __nt = super::__action8::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            248 => {
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -561610,16 +595449,6 @@
             _ => __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)>
@@ -561630,13 +595459,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -561720,16 +595549,6 @@
             _ => __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)>
@@ -561750,13 +595569,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -561900,63 +595719,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -561970,13 +595789,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -561990,43 +595809,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -562040,13 +595859,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -562080,13 +595899,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -562140,13 +595959,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -562181,1281 +596000,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -563464,59 +597445,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -563525,59 +597514,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -563586,216 +597583,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -563806,44 +597831,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -563852,180 +597883,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -564035,30 +598088,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -564068,30 +598125,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -564101,62 +598162,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -564164,65 +598233,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -564231,18 +598308,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -564253,18 +598332,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -564278,18 +598359,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -564301,18 +598384,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -564325,18 +598410,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -564347,18 +598434,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -564371,18 +598460,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -564393,18 +598484,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -564416,18 +598509,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -564437,77 +598532,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -564516,18 +598621,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -564536,36 +598643,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -564575,36 +598686,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -564615,18 +598730,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -564636,20 +598753,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -564658,20 +598777,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -564679,30 +598800,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -564711,108 +598836,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -564825,15 +598964,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -564845,154 +598986,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -565001,94 +599109,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -565097,75 +599217,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -565174,15 +599304,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -565191,15 +599323,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -565208,35 +599342,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -565248,18 +599386,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -565268,65 +599408,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -565334,80 +599482,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -565417,95 +599575,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -565513,79 +599719,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -565594,15 +599810,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -565611,15 +599829,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -565628,181 +599848,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -565812,602 +600056,680 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
-    fn __reduce247<
+    fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Struct = Struct => ActionFn(35);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 122)
+        let __nt = super::__action35::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
-pub(crate) use self::__parse__ReturnStmt::ReturnStmtParser;
+pub(crate) use self::__parse__Statement::StatementParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::needless_lifetimes, clippy::type_complexity, clippy::needless_return, clippy::too_many_arguments, clippy::never_loop, clippy::match_single_binding, clippy::needless_raw_string_hashes)]
-mod __parse__Statement {
+mod __parse__Struct {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -566470,372 +600792,110 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 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, 4, 65, 5, 0, 0, 6, 0, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        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, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 2
-        0, -170, -170, -170, -170, 11, -170, -170, -170, -170, -170, 0, 12, -170, -170, 0, 0, -170, -170, -170, -170, -170, -170, -170, 13, -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, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 3
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0,
         // State 4
-        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
+        0, 0, 0, 19, 0, 0, 0, 20, 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, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 5
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 19, 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, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 6
-        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0,
         // State 7
-        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
+        0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 8
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, -170, 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, 19, 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, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 9
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 12, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, 13, -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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0,
         // State 10
-        81, 0, 0, 20, 0, 21, -80, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
+        0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 11
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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
-        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 4, 0, 0, 0, 0,
         // State 13
-        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -139, 0, 0, 0, 0, 0, -139, 0, 0, -139, 0, 0, 0, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, 0, 0, -139, 0,
         // State 14
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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,
         // State 15
-        0, 98, -120, -120, 99, 0, -120, -120, -120, -120, -120, 0, 0, -120, -120, 0, 0, -120, 100, 101, 0, 102, 103, 104, 0, -120, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, -120, 105, -120, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 8, 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, -199, 0,
         // State 16
-        0, 0, 106, -122, 0, 0, -122, 107, -122, -122, -122, 0, 0, -122, 108, 0, 0, -122, 0, 0, 0, 0, 0, 0, 0, -122, -122, -122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, -122, 0, -122, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 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,
         // State 17
-        0, 0, 0, 109, 0, 0, -110, 0, 110, -110, 111, 0, 0, -110, 0, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, 112, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 113, 0, -110, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 18
-        81, 0, 0, 20, 0, 34, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 19
-        81, 0, 0, 20, 0, 34, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 35, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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
-        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0,
         // State 21
-        81, 0, 0, 20, 0, 34, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 22
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -91, 0,
         // 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, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 24
-        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0,
         // State 25
-        81, 0, 0, 20, 0, 21, -82, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
+        0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 26
-        0, -170, -170, -170, -170, 11, -170, -170, -170, -170, -170, 0, 12, 0, -170, 0, 127, -170, -170, -170, 0, -170, -170, -170, 13, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 11, 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, -200, 0,
         // State 27
-        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
+        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 28
-        0, 0, 0, 131, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 29
-        0, 0, 0, 0, 0, 0, 0, 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, 4, 65, 5, 0, 0, 6, 0, 0, 0, 0, 7, 0, 0, 0, 8, 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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 30
-        81, 0, 0, 20, 0, 34, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
+        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, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 31
-        81, 0, 0, 20, 0, 34, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -93, 0,
         // State 32
-        81, 0, 0, 20, 0, 34, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 33
-        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -44, 0,
         // State 34
-        81, 0, 0, 20, 0, 34, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
+        0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 35
-        0, 0, 0, 131, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
         // 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, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -45, 0,
         // State 37
-        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, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, 0, 0, 0, 0, 0, 0, 0, 0, -185, 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, 30, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0,
         // State 39
-        0, 0, 0, 131, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
         // State 40
-        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, 4, 65, 5, 0, 0, 6, 0, 0, 0, 0, 7, 0, 0, 0, 8, 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, 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,
         // State 41
-        0, 98, -119, -119, 99, 0, -119, -119, -119, -119, -119, 0, 0, -119, -119, 0, 0, -119, 100, 101, 0, 102, 103, 104, 0, -119, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, 105, -119, 0,
-        // State 42
-        0, 0, 106, -121, 0, 0, -121, 107, -121, -121, -121, 0, 0, -121, 108, 0, 0, -121, 0, 0, 0, 0, 0, 0, 0, -121, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, 0, -121, 0,
-        // State 43
-        0, 0, 0, 131, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 44
-        0, 0, 0, 131, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 45
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
-        // State 46
-        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
-        // State 47
-        0, 0, 0, 131, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 48
-        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
-        // State 49
-        0, 0, 0, 131, 0, 0, 0, 132, 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, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 50
-        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
-        // State 51
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 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,
-        // State 52
-        0, 0, 0, 131, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 53
-        81, 0, 0, 20, 0, 21, 0, 22, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 65, 0, 0, 84, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86,
-        // State 54
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 56
-        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
-        // State 57
-        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
-        // State 58
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 59
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 60
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 61
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 62
-        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
-        // State 63
-        0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 64
-        0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 0,
-        // State 65
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 66
-        0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 67
-        0, 0, 0, 0, 0, 0, 0, -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, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
-        // State 68
-        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, -184, -184, -184, 0, 0, -184, 0, 0, 0, 0, -184, 0, 0, 0, -184, 0, 0, 0, -184, 0,
-        // State 69
-        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, -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 70
-        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
-        // State 71
-        0, 0, 0, 0, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, -185, -185, 0, 0, -185, 0, 0, 0, 0, -185, 0, 0, 0, -185, 0, 0, 0, -185, 0,
-        // State 72
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 73
-        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, -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 74
-        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, -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 75
-        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, -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 76
-        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, -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 77
-        0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, -111, -111, 0, 0, -111, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, -111, 0,
-        // State 78
-        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, -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 79
-        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, -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 80
-        -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, 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 81
-        -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, 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 82
-        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, -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 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, -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 84
-        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, -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 85
-        -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, 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 86
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 87
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -177, 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,
-        // State 88
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, -174, -174, 0, 0, -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, -174, 0,
-        // State 89
-        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, 0,
-        // State 90
-        0, 0, 0, 0, 0, 0, -79, 0, 0, 125, 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,
-        // State 91
-        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, -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 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, 126, 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,
-        // State 93
-        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, 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,
-        // 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, 0, 37, 0, 0, 0, 0,
-        // State 95
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 96
-        0, 0, 0, 0, 0, 0, 0, -145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, -145, -145, -145, 0, 0, -145, 0, 0, 0, 0, -145, 0, 0, 0, -145, 0, 0, 0, -145, 0,
-        // State 97
-        -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
-        // State 98
-        -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, 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 99
-        -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, 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 100
-        -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, 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 101
-        -62, 0, 0, -62, 0, -62, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, -62,
-        // State 102
-        -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, 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 103
-        -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, 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 104
-        -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, 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 105
-        -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, 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 106
-        -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, 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 107
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 108
-        -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, 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 109
-        -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, 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 110
-        -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, 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 111
-        -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, 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 112
-        -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, 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 113
-        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, -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 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, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, -113, 0,
-        // State 115
-        0, 0, 0, 0, 0, 0, 136, 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,
-        // State 116
-        0, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 117
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, -114, -114, 0, 0, -114, -114, -114, 0, -114, -114, -114, 0, -114, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, -114, 0,
-        // State 118
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 119
-        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, 0, -221, -221, -221, 0, 0, -221, 0, 0, 0, 0, -221, 0, 0, 0, -221, 0, 0, 0, -221, 0,
-        // State 120
-        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, 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,
-        // State 121
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 122
-        0, 0, 0, 0, 0, 0, -81, 0, 0, 139, 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,
-        // State 123
-        0, -125, -125, -125, -125, 0, -125, -125, -125, -125, -125, 0, 0, -125, -125, 0, 0, -125, -125, -125, 0, -125, -125, -125, 0, -125, -125, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, -125, -125, -125, 0,
-        // State 124
-        -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
-        // State 125
-        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, -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 126
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 127
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, -200, 0, 0, 0, -200, 48, 0, -200, 0, -200, 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, -200, 0, 0, -200, 0,
-        // State 128
-        0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, -108, 0, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, -108, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0,
-        // State 129
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 130
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 131
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 132
-        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, -158, -158, -158, 0, 0, -158, 0, 0, 0, 0, -158, 0, 0, 0, -158, 0, 0, 0, -158, 0,
-        // State 133
-        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, -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 134
-        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, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, -112, 0,
-        // State 135
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, -196, -196, 0, 0, -196, -196, -196, 0, -196, -196, -196, 0, -196, -196, -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 136
-        0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, -109, 0, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, -109, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0,
-        // State 137
-        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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 138
-        -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, -25,
-        // State 139
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0,
-        // State 140
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 141
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0,
-        // State 142
-        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, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
-        // State 143
-        0, 0, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, -144, -144, 0, 0, -144, 0, 0, 0, 0, -144, 0, 0, 0, -144, 0, 0, 0, -144, 0,
-        // State 144
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, -201, 0, 0, 0, -201, 53, 0, -201, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0,
-        // State 145
-        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, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 146
-        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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 147
-        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, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 148
-        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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 149
-        0, 0, 0, 0, 0, 0, 0, -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, -159, -159, -159, 0, 0, -159, 0, 0, 0, 0, -159, 0, 0, 0, -159, 0, 0, 0, -159, 0,
-        // State 150
-        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, -78, 0, 0, -78, -78, -78, 0, 0, -78, 0, 0, 0, 0, -78, 0, 0, 0, -78, 0, 0, 0, -78, 0,
-        // State 151
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 152
-        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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 153
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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,
-        // State 154
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
-        // State 155
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 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, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 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, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 158
-        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, 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,
-        // State 159
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 160
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0,
-        // State 162
-        0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 163
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
-        // State 164
-        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, 29, 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 165
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
-        // State 166
-        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, -130, -130, -130, 0, 0, -130, 0, 0, 0, 0, -130, 0, 0, 0, -130, 0, 0, 0, -130, 0,
-        // State 167
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, -202, 0, 0, 0, -202, 0, 0, -202, 0, -202, 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, -202, 0, 0, -202, 0,
-        // State 168
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 169
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
-        // State 170
-        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, 0,
-        // State 171
-        0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 172
-        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, -203, 0, 0, 0, -203, 0, 0, -203, 0, -203, 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, -203, 0, 0, -203, 0,
+        // State 42
+        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, -202, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -566864,7 +600924,7 @@
         // State 10
         0,
         // State 11
-        0,
+        -249,
         // State 12
         0,
         // State 13
@@ -566906,7 +600966,7 @@
         // State 31
         0,
         // State 32
-        0,
+        -184,
         // State 33
         0,
         // State 34
@@ -566924,394 +600984,44 @@
         // 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
-        -181,
-        // State 57
-        -179,
-        // State 58
-        0,
-        // State 59
-        0,
-        // State 60
-        0,
-        // State 61
-        -250,
-        // State 62
-        -180,
-        // State 63
-        0,
-        // State 64
-        0,
-        // State 65
-        0,
-        // State 66
-        0,
-        // State 67
         -183,
-        // State 68
-        -184,
-        // State 69
-        0,
-        // State 70
-        -182,
-        // State 71
-        -185,
-        // 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
-        -145,
-        // State 97
-        0,
-        // State 98
-        0,
-        // State 99
-        0,
-        // State 100
-        0,
-        // State 101
-        0,
-        // State 102
-        0,
-        // State 103
-        0,
-        // State 104
-        0,
-        // State 105
-        0,
-        // State 106
-        0,
-        // State 107
-        0,
-        // State 108
-        0,
-        // State 109
-        0,
-        // State 110
-        0,
-        // State 111
-        0,
-        // State 112
-        0,
-        // State 113
-        0,
-        // State 114
-        0,
-        // State 115
-        0,
-        // State 116
-        0,
-        // State 117
-        0,
-        // State 118
-        0,
-        // State 119
-        -221,
-        // State 120
-        0,
-        // State 121
-        0,
-        // State 122
-        0,
-        // State 123
-        0,
-        // State 124
-        0,
-        // State 125
-        0,
-        // State 126
-        0,
-        // State 127
-        0,
-        // State 128
-        0,
-        // State 129
-        0,
-        // State 130
-        0,
-        // State 131
-        0,
-        // State 132
-        0,
-        // State 133
-        0,
-        // State 134
-        0,
-        // State 135
-        0,
-        // State 136
-        0,
-        // State 137
-        0,
-        // State 138
-        0,
-        // State 139
-        0,
-        // State 140
-        0,
-        // State 141
-        0,
-        // State 142
-        -129,
-        // State 143
-        -144,
-        // State 144
-        0,
-        // State 145
-        0,
-        // State 146
-        0,
-        // State 147
-        0,
-        // State 148
-        0,
-        // State 149
-        0,
-        // State 150
-        -78,
-        // 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
-        -130,
-        // State 167
-        0,
-        // State 168
-        0,
-        // State 169
-        0,
-        // State 170
-        0,
-        // State 171
-        0,
-        // State 172
+        // State 42
         0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            1 => 1,
-            14 => 25,
-            29 => 45,
-            32 => 49,
-            35 => 54,
-            36 => 30,
-            37 => 31,
-            38 => 32,
-            39 => match state {
-                23 => 119,
-                37 => 142,
-                38 => 143,
-                51 => 166,
-                _ => 96,
+            26 => 6,
+            32 => 4,
+            43 => match state {
+                9 => 38,
+                _ => 20,
             },
-            40 => 89,
-            44 => 139,
             45 => match state {
-                47 => 157,
-                52 => 168,
-                _ => 152,
-            },
-            48 => match state {
-                4 => 14,
-                7 => 23,
-                27 => 37,
-                46 => 51,
-                6 => 87,
-                10 => 90,
-                12 => 92,
-                13 => 93,
-                24 => 120,
-                25 => 122,
-                48 => 158,
-                50 => 164,
-                53 => 169,
-                _ => 115,
-            },
-            49 => 73,
-            50 => match state {
-                18 => 113,
-                19 => 114,
-                21 => 117,
-                30 => 133,
-                34 => 134,
-                _ => 74,
-            },
-            51 => match state {
-                31 => 41,
-                _ => 15,
-            },
-            52 => match state {
-                32 => 42,
-                _ => 16,
-            },
-            53 => 17,
-            55 => match state {
-                0 | 29 | 40 => 55,
-                _ => 75,
+                7 => 35,
+                10 => 40,
+                _ => 14,
             },
-            58 => 56,
             60 => match state {
-                1 => 8,
-                13 | 20 | 24 | 48 | 50 | 53 => 26,
-                3 => 72,
-                5 => 86,
-                11 => 91,
-                22 => 118,
-                28 | 35 | 43..=44 | 47 | 49 | 52 => 127,
-                36 | 45 => 140,
-                39 => 144,
-                _ => 2,
-            },
-            62 => 94,
-            63 => 57,
-            65 => 58,
-            69 => 40,
-            74 => match state {
-                0 | 29 | 40 => 59,
-                1 => 65,
-                _ => 76,
-            },
-            75 => match state {
-                9 => 88,
-                _ => 69,
+                1 => 12,
+                3 | 6 | 9 => 21,
+                5 => 26,
+                _ => 15,
             },
-            76 => 9,
-            78 => 60,
+            78 => 11,
             79 => match state {
-                29 => 132,
-                40 => 149,
-                _ => 61,
-            },
-            83 => match state {
-                20 => 116,
-                24 => 121,
-                48 => 159,
-                50 => 165,
-                53 => 170,
-                _ => 95,
-            },
-            84 => match state {
-                45 => 154,
-                _ => 141,
+                6 => 31,
+                _ => 22,
             },
-            86 => 77,
-            87 => 78,
-            88 => match state {
-                28 => 128,
-                35 => 137,
-                43 => 151,
-                49 => 160,
-                _ => 153,
+            87 => match state {
+                4 => 23,
+                8 => 37,
+                _ => 16,
             },
-            90 => match state {
-                39 => 145,
-                _ => 129,
+            89 => match state {
+                5 => 27,
+                _ => 17,
             },
-            92 => 39,
-            93 => 18,
-            94 => 79,
-            95 => 62,
+            91 => 5,
             _ => 0,
         }
     }
@@ -567381,25 +601091,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -567407,7 +601119,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::Statement;
+        type Success = ast::Struct;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -567425,7 +601137,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -567449,7 +601161,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -567457,7 +601169,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -567481,22 +601193,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -567557,10 +601271,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -567581,10 +601296,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -568561,25 +602277,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -568591,14 +602307,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -568610,19 +602326,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -568634,109 +602350,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -568748,31 +602464,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -568783,68 +602499,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -568855,26 +602571,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -568886,30 +602602,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -569075,13 +602791,13 @@
                     nonterminal_produced: 122,
                 }
             }
-            248 => {
+            248 => __state_machine::SimulatedReduce::Accept,
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 123,
+                    nonterminal_produced: 124,
                 }
             }
-            249 => __state_machine::SimulatedReduce::Accept,
             250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -569142,52 +602858,50 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct StatementParser {
+    pub(crate) struct StructParser {
         _priv: (),
     }
 
-    impl Default for StatementParser { fn default() -> Self { Self::new() } }
-    impl StatementParser {
-        pub(crate) fn new() -> StatementParser {
-            StatementParser {
+    impl Default for StructParser { fn default() -> Self { Self::new() } }
+    impl StructParser {
+        pub(crate) fn new() -> StructParser {
+            StructParser {
                 _priv: (),
             }
         }
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
-        ) -> Result<ast::Statement, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::Struct, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -569201,7 +602915,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -569215,802 +602929,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::Statement,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> Option<Result<ast::Struct,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            249 => {
-                // __Statement = Statement => ActionFn(8);
-                let __sym0 = __pop_Variant55(__symbols);
+                // __Struct = Struct => ActionFn(35);
+                let __sym0 = __pop_Variant54(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action8::<>(__sym0);
+                let __nt = super::__action35::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            249 => {
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -570105,16 +603818,6 @@
             _ => __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)>
@@ -570125,13 +603828,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -570215,16 +603918,6 @@
             _ => __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)>
@@ -570245,13 +603938,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -570395,63 +604088,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -570465,13 +604158,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -570485,43 +604178,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -570535,13 +604228,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -570575,13 +604268,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -570635,13 +604328,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -570676,1281 +604369,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -571959,59 +605814,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -572020,59 +605883,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -572081,216 +605952,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -572301,44 +606200,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -572347,180 +606252,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -572530,30 +606457,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -572563,30 +606494,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -572596,62 +606531,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -572659,65 +606602,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -572726,18 +606677,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -572748,18 +606701,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -572773,18 +606728,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -572796,18 +606753,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -572820,18 +606779,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -572842,18 +606803,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -572866,18 +606829,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -572888,18 +606853,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -572911,18 +606878,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -572932,77 +606901,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -573011,18 +606990,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -573031,36 +607012,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -573070,36 +607055,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -573110,18 +607099,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -573131,20 +607122,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -573153,20 +607146,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -573174,30 +607169,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -573206,108 +607205,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -573320,15 +607333,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -573340,154 +607355,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -573496,94 +607478,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -573592,75 +607586,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -573669,15 +607673,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -573686,15 +607692,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -573703,35 +607711,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -573743,18 +607755,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -573763,65 +607777,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -573829,80 +607851,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -573912,95 +607944,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -574008,79 +608088,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -574089,15 +608179,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -574106,15 +608198,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -574123,181 +608217,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -574307,602 +608425,680 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
-    fn __reduce248<
+    fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant54(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 123)
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
-pub(crate) use self::__parse__Statement::StatementParser;
+pub(crate) use self::__parse__Struct::StructParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::needless_lifetimes, clippy::type_complexity, clippy::needless_return, clippy::too_many_arguments, clippy::never_loop, clippy::match_single_binding, clippy::needless_raw_string_hashes)]
-mod __parse__Struct {
+mod __parse__StructField {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -574965,112 +609161,78 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 2
-        0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 3
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0,
+        0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 4
-        0, 0, 0, 19, 0, 0, 0, 20, 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, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 13, 0, 0, 0, 14, 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, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 5
-        0, 0, 0, 19, 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, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 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, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 7
-        0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 8
-        0, 0, 0, 19, 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, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -139, 0, 0, 0, 0, 0, -139, 0, 0, -139, 0, 0, 0, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 9
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 4, 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,
         // State 10
-        0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 11
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 12
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0,
+        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, 0, -205, 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, -139, 0, 0, 0, 0, 0, -139, 0, 0, -139, 0, 0, 0, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, 0, 0, -139, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 6, 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,
         // State 15
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 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, 0, -212, 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, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -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, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 17
-        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, 0, -212, 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, 0, -207, 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, 0, -206, 0, 0, 0, 0, 0, 0, 29, 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, 0, -208, 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, 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,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 20
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 24, 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,
         // State 21
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,
         // State 22
-        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, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 23
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 24
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
         // State 25
-        0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 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, -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, 0, -201, 0,
-        // State 27
-        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, 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, -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, 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, -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, 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, -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, 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, 0, -93, 0,
-        // State 32
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 33
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -44, 0,
-        // State 34
         0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 35
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
-        // 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, -45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -45, 0,
-        // State 37
-        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, 0, -188, 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, 0, 42, 0,
-        // State 39
-        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, -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, 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, 0,
-        // State 42
-        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, -203, 0,
+        // State 26
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -575091,21 +609253,21 @@
         // State 6
         0,
         // State 7
-        0,
+        -250,
         // State 8
-        0,
+        -139,
         // State 9
-        0,
+        -199,
         // State 10
-        0,
+        -185,
         // State 11
-        -251,
+        0,
         // State 12
         0,
         // State 13
         0,
         // State 14
-        0,
+        -200,
         // State 15
         0,
         // State 16
@@ -575121,7 +609283,7 @@
         // State 21
         0,
         // State 22
-        0,
+        -201,
         // State 23
         0,
         // State 24
@@ -575129,74 +609291,31 @@
         // State 25
         0,
         // State 26
-        0,
-        // State 27
-        0,
-        // State 28
-        0,
-        // State 29
-        0,
-        // State 30
-        0,
-        // State 31
-        0,
-        // State 32
-        -187,
-        // 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
-        -186,
-        // State 42
-        0,
+        -202,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            26 => 6,
             32 => 4,
-            43 => match state {
-                9 => 38,
-                _ => 20,
-            },
             45 => match state {
-                7 => 35,
-                10 => 40,
-                _ => 14,
+                5 => 24,
+                _ => 19,
             },
             60 => match state {
-                1 => 12,
-                3 | 6 | 9 => 21,
-                5 => 26,
-                _ => 15,
-            },
-            80 => 11,
-            81 => match state {
-                6 => 31,
-                _ => 22,
+                0 => 6,
+                2 => 14,
+                _ => 9,
             },
-            88 => match state {
-                4 => 23,
-                8 => 37,
-                _ => 16,
+            79 => 7,
+            87 => match state {
+                1 => 10,
+                4 => 21,
+                _ => 20,
             },
-            90 => match state {
-                5 => 27,
-                _ => 17,
+            89 => match state {
+                2 => 15,
+                _ => 11,
             },
-            92 => 5,
+            91 => 2,
             _ => 0,
         }
     }
@@ -575266,25 +609385,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -575292,7 +609413,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::Struct;
+        type Success = ast::StructField;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -575310,7 +609431,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -575334,7 +609455,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -575342,7 +609463,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -575366,22 +609487,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -575442,10 +609565,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -575466,10 +609590,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -576446,25 +610571,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -576476,14 +610601,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -576495,19 +610620,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -576519,109 +610644,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -576633,31 +610758,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -576668,68 +610793,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -576740,26 +610865,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -576771,30 +610896,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -576966,13 +611091,13 @@
                     nonterminal_produced: 123,
                 }
             }
-            249 => {
+            249 => __state_machine::SimulatedReduce::Accept,
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 124,
+                    nonterminal_produced: 125,
                 }
             }
-            250 => __state_machine::SimulatedReduce::Accept,
             251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -577027,52 +611152,50 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct StructParser {
+    pub(crate) struct StructFieldParser {
         _priv: (),
     }
 
-    impl Default for StructParser { fn default() -> Self { Self::new() } }
-    impl StructParser {
-        pub(crate) fn new() -> StructParser {
-            StructParser {
+    impl Default for StructFieldParser { fn default() -> Self { Self::new() } }
+    impl StructFieldParser {
+        pub(crate) fn new() -> StructFieldParser {
+            StructFieldParser {
                 _priv: (),
             }
         }
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
-        ) -> Result<ast::Struct, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::StructField, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -577086,7 +611209,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -577100,802 +611223,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::Struct,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> Option<Result<ast::StructField,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            250 => {
-                // __Struct = Struct => ActionFn(35);
-                let __sym0 = __pop_Variant56(__symbols);
+                // __StructField = StructField => ActionFn(34);
+                let __sym0 = __pop_Variant20(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action35::<>(__sym0);
+                let __nt = super::__action34::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            250 => {
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -577990,16 +612112,6 @@
             _ => __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)>
@@ -578010,13 +612122,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -578100,16 +612212,6 @@
             _ => __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)>
@@ -578130,13 +612232,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -578280,63 +612382,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -578350,13 +612452,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -578370,43 +612472,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -578420,13 +612522,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -578460,13 +612562,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -578520,13 +612622,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -578561,1281 +612663,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -579844,59 +614108,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -579905,59 +614177,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -579966,216 +614246,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -580186,44 +614494,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -580232,180 +614546,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -580415,30 +614751,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -580448,30 +614788,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -580481,62 +614825,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -580544,65 +614896,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -580611,18 +614971,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -580633,18 +614995,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -580658,18 +615022,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -580681,18 +615047,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -580705,18 +615073,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -580727,18 +615097,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -580751,18 +615123,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -580773,18 +615147,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -580796,18 +615172,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -580817,77 +615195,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -580896,18 +615284,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -580916,36 +615306,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -580955,36 +615349,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -580995,18 +615393,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -581016,20 +615416,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -581038,20 +615440,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -581059,30 +615463,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -581091,108 +615499,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -581205,15 +615627,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -581225,154 +615649,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -581381,94 +615772,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -581477,75 +615880,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -581554,15 +615967,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -581571,15 +615986,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -581588,35 +616005,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -581628,18 +616049,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -581648,65 +616071,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -581714,80 +616145,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -581797,95 +616238,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -581893,79 +616382,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -581974,15 +616473,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -581991,15 +616492,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -582008,181 +616511,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -582192,602 +616719,680 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
-    fn __reduce249<
+    fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 124)
+        let __nt = super::__action30::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
-pub(crate) use self::__parse__Struct::StructParser;
+pub(crate) use self::__parse__StructField::StructFieldParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::needless_lifetimes, clippy::type_complexity, clippy::needless_return, clippy::too_many_arguments, clippy::never_loop, clippy::match_single_binding, clippy::needless_raw_string_hashes)]
-mod __parse__StructField {
+mod __parse__StructInitExpr {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -582850,80 +617455,252 @@
         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),
+        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),
     }
     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, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
         // State 2
-        0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 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, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 3
-        0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 4
-        0, 0, 0, 13, 0, 0, 0, 14, 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, 9, 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, 45, 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, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 5
-        0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 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, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 6
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        67, 0, 0, 14, 0, 15, 0, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
         // State 7
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 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, -139, 0, 0, 0, 0, 0, -139, 0, 0, -139, 0, 0, 0, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 75, -120, -120, 76, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 77, 78, 0, 79, 80, 81, 0, -120, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 82, -120, 0,
         // State 9
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 83, -122, 0, 0, -122, 84, -122, -122, -122, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, -122, -122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, 0, -122, 0,
         // State 10
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 86, 0, 0, -110, 0, 87, -110, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 89, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, -110, 0,
         // State 11
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -167, -167, -167, -167, 23, -167, -167, -167, -167, -167, 0, 24, 0, -167, 0, 36, 0, -167, -167, 0, -167, -167, -167, 25, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 12
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        67, 0, 0, 14, 0, 27, 0, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
         // State 13
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        67, 0, 0, 14, 0, 27, 0, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 28, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
         // State 14
-        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, 0,
+        67, 0, 0, 14, 0, 15, 0, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
         // State 15
-        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, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        67, 0, 0, 14, 0, 27, 0, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
         // State 16
-        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, 0, -207, 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, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 17
-        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, 0, -208, 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, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 18
-        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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        67, 0, 0, 14, 0, 27, 0, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
         // 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, 0,
+        67, 0, 0, 14, 0, 27, 0, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
         // State 20
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 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,
+        67, 0, 0, 14, 0, 27, 0, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
         // State 21
-        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, 0,
+        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 24, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 25, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 22
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        67, 0, 0, 14, 0, 15, -80, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
         // State 23
-        0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 24
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        67, 0, 0, 14, 0, 15, 0, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
         // State 25
-        0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -167, -167, -167, -167, 23, -167, -167, -167, -167, -167, 0, 24, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, 25, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 26
-        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, 0,
+        67, 0, 0, 14, 0, 15, 0, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
+        // State 27
+        67, 0, 0, 14, 0, 27, 0, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
+        // State 28
+        0, 75, -119, -119, 76, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, 77, 78, 0, 79, 80, 81, 0, -119, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 82, -119, 0,
+        // State 29
+        0, 0, 83, -121, 0, 0, -121, 84, -121, -121, -121, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, -121, 0,
+        // State 30
+        67, 0, 0, 14, 0, 15, -82, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
+        // State 31
+        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, -142, 0, 0, 0, 0,
+        // State 32
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 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, 0,
+        // State 34
+        0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, 0, -139, -139, -139, 0, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 0,
+        // State 35
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // 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, 47, 0,
+        // State 37
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 38
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 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, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 40
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -199, 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, -199, 0,
+        // State 41
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 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,
+        // State 42
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 43
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 54, 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, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 45
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        // State 46
+        0, 0, 0, 0, 0, 0, -188, 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, -188, 0,
+        // State 47
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
+        // State 48
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 49
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0,
+        // State 50
+        0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 51
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, -200, 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, -200, 0,
+        // State 52
+        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 53
+        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, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 54
+        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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 55
+        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, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 56
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
+        // State 57
+        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, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
+        // State 58
+        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, -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 59
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, -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 60
+        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, -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 61
+        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, -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 62
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
+        // State 63
+        0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
+        // State 64
+        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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
+        // State 65
+        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, -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 66
+        -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, 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 67
+        -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, 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,
+        // State 68
+        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, -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 69
+        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, -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,
+        // State 70
+        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, -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 71
+        -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, 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
+        0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 73
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        // State 74
+        -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
+        // State 75
+        -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, 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 76
+        -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, 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 77
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        // State 78
+        -62, 0, 0, -62, 0, -62, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, -62,
+        // State 79
+        -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, 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 80
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        // State 81
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        // State 82
+        -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, 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 83
+        -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, 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 84
+        -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, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        // State 85
+        -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, 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 86
+        -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, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        // State 87
+        -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, 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 88
+        -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, 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 89
+        -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, 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 90
+        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, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, 0,
+        // State 91
+        0, -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, -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 92
+        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, -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 93
+        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, 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,
+        // State 94
+        0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 95
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        // State 96
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 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, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 98
+        0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 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, -108, 0,
+        // State 99
+        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, -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 100
+        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, -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 101
+        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, 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, -79, 0, 0, 112, 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,
+        // State 103
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
+        // State 104
+        0, 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, 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,
+        // State 105
+        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, -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 106
+        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, -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,
+        // State 107
+        0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 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, -109, 0,
+        // State 108
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
+        // State 109
+        0, 0, 0, 0, 0, 0, -81, 0, 0, 114, 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,
+        // State 110
+        0, -125, -125, -125, -125, 0, -125, -125, -125, -125, -125, 0, 0, 0, -125, 0, 0, 0, -125, -125, 0, -125, -125, -125, 0, -125, -125, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, -125, -125, 0,
+        // State 111
+        -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
+        // State 112
+        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, -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 113
+        -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, -25,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -582944,13 +617721,13 @@
         // State 6
         0,
         // State 7
-        -252,
+        0,
         // State 8
-        -139,
+        0,
         // State 9
-        -200,
+        0,
         // State 10
-        -188,
+        0,
         // State 11
         0,
         // State 12
@@ -582958,7 +617735,7 @@
         // State 13
         0,
         // State 14
-        -201,
+        0,
         // State 15
         0,
         // State 16
@@ -582974,7 +617751,7 @@
         // State 21
         0,
         // State 22
-        -202,
+        0,
         // State 23
         0,
         // State 24
@@ -582982,31 +617759,262 @@
         // State 25
         0,
         // State 26
-        -203,
+        0,
+        // State 27
+        0,
+        // State 28
+        0,
+        // State 29
+        0,
+        // State 30
+        0,
+        // State 31
+        0,
+        // State 32
+        0,
+        // State 33
+        -251,
+        // 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
+        -188,
+        // 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
+        0,
+        // State 104
+        0,
+        // State 105
+        0,
+        // State 106
+        0,
+        // State 107
+        0,
+        // State 108
+        0,
+        // State 109
+        0,
+        // State 110
+        0,
+        // State 111
+        0,
+        // State 112
+        0,
+        // State 113
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
+            14 => 30,
+            29 => 3,
             32 => 4,
+            36 => 18,
+            37 => 19,
+            38 => 20,
+            40 => 101,
+            44 => 36,
             45 => match state {
-                5 => 24,
-                _ => 19,
+                7 => 73,
+                16 => 97,
+                _ => 39,
             },
-            60 => match state {
-                0 => 6,
-                2 => 14,
+            48 => match state {
+                6 => 57,
+                22 => 102,
+                24 => 104,
+                30 => 109,
+                _ => 93,
+            },
+            49 => 58,
+            50 => match state {
+                12 => 91,
+                13 => 92,
+                15 => 95,
+                18 => 99,
+                27 => 105,
+                _ => 59,
+            },
+            51 => match state {
+                19 => 28,
+                _ => 8,
+            },
+            52 => match state {
+                20 => 29,
                 _ => 9,
             },
-            81 => 7,
-            88 => match state {
-                1 => 10,
-                4 => 21,
-                _ => 20,
+            53 => 10,
+            55 => 60,
+            60 => match state {
+                6 | 14 => 11,
+                0 => 31,
+                1 | 3 => 37,
+                2 | 4 | 7 | 16..=17 => 40,
+                5 => 51,
+                23 => 103,
+                _ => 25,
             },
-            90 => match state {
-                2 => 15,
-                _ => 11,
+            62 => 32,
+            72 => 61,
+            73 => match state {
+                21 => 100,
+                _ => 90,
             },
-            92 => 2,
+            74 => 21,
+            81 => match state {
+                6 => 62,
+                14 => 94,
+                _ => 33,
+            },
+            82 => match state {
+                3 => 45,
+                _ => 38,
+            },
+            84 => 63,
+            85 => 64,
+            87 => match state {
+                4 => 48,
+                17 => 98,
+                _ => 41,
+            },
+            89 => match state {
+                5 => 52,
+                _ => 42,
+            },
+            91 => 5,
+            92 => 12,
+            93 => 65,
             _ => 0,
         }
     }
@@ -583076,25 +618084,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -583102,7 +618112,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::StructField;
+        type Success = ast::StructInitExpr;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -583120,7 +618130,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -583144,7 +618154,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -583152,7 +618162,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -583176,22 +618186,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -583252,10 +618264,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -583276,10 +618289,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -584256,25 +619270,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -584286,14 +619300,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -584305,19 +619319,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -584329,109 +619343,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -584443,31 +619457,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -584478,68 +619492,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -584550,26 +619564,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -584581,30 +619595,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -584782,13 +619796,13 @@
                     nonterminal_produced: 124,
                 }
             }
-            250 => {
+            250 => __state_machine::SimulatedReduce::Accept,
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 125,
+                    nonterminal_produced: 126,
                 }
             }
-            251 => __state_machine::SimulatedReduce::Accept,
             252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -584837,52 +619851,50 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct StructFieldParser {
+    pub(crate) struct StructInitExprParser {
         _priv: (),
     }
 
-    impl Default for StructFieldParser { fn default() -> Self { Self::new() } }
-    impl StructFieldParser {
-        pub(crate) fn new() -> StructFieldParser {
-            StructFieldParser {
+    impl Default for StructInitExprParser { fn default() -> Self { Self::new() } }
+    impl StructInitExprParser {
+        pub(crate) fn new() -> StructInitExprParser {
+            StructInitExprParser {
                 _priv: (),
             }
         }
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
-        ) -> Result<ast::StructField, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::StructInitExpr, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -584896,7 +619908,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -584910,802 +619922,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::StructField,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> Option<Result<ast::StructInitExpr,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            251 => {
-                // __StructField = StructField => ActionFn(34);
-                let __sym0 = __pop_Variant20(__symbols);
+                // __StructInitExpr = StructInitExpr => ActionFn(30);
+                let __sym0 = __pop_Variant56(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action34::<>(__sym0);
+                let __nt = super::__action30::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            251 => {
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -585800,16 +620811,6 @@
             _ => __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)>
@@ -585820,13 +620821,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -585910,16 +620911,6 @@
             _ => __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)>
@@ -585940,13 +620931,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -586090,63 +621081,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -586160,13 +621151,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -586180,43 +621171,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -586230,13 +621221,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -586270,13 +621261,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -586330,13 +621321,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -586371,1281 +621362,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -587654,59 +622807,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -587715,59 +622876,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -587776,216 +622945,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -587996,44 +623193,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -588042,180 +623245,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -588225,30 +623450,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -588258,30 +623487,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -588291,62 +623524,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -588354,65 +623595,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -588421,18 +623670,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -588443,18 +623694,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -588468,18 +623721,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -588491,18 +623746,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -588515,18 +623772,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -588537,18 +623796,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -588561,18 +623822,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -588583,18 +623846,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -588606,18 +623871,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -588627,77 +623894,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -588706,18 +623983,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -588726,36 +624005,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -588765,36 +624048,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -588805,18 +624092,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -588826,20 +624115,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -588848,20 +624139,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -588869,30 +624162,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -588901,108 +624198,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -589015,15 +624326,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -589035,154 +624348,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -589191,94 +624471,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -589287,75 +624579,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -589364,15 +624666,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -589381,15 +624685,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -589398,35 +624704,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -589438,18 +624748,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -589458,65 +624770,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -589524,80 +624844,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -589607,95 +624937,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -589703,79 +625081,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -589784,15 +625172,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -589801,15 +625191,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -589818,181 +625210,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -590002,602 +625418,680 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
-    fn __reduce250<
+    fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
-        let __sym0 = __pop_Variant56(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 125)
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
-pub(crate) use self::__parse__StructField::StructFieldParser;
+pub(crate) use self::__parse__StructInitExpr::StructInitExprParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::needless_lifetimes, clippy::type_complexity, clippy::needless_return, clippy::too_many_arguments, clippy::never_loop, clippy::match_single_binding, clippy::needless_raw_string_hashes)]
-mod __parse__StructInitExpr {
+mod __parse__StructInitField {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -590660,254 +626154,250 @@
         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),
+        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),
     }
     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, 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, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
+        45, 0, 0, 8, 0, 9, 0, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 2
-        0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 51, -120, -120, 52, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 53, 54, 0, 55, 56, 57, 0, -120, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 58, -120, 0,
         // State 3
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 59, -122, 0, 0, -122, 60, -122, -122, -122, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, -122, -122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, 0, -122, 0,
         // State 4
-        0, 0, 0, 44, 0, 0, 0, 45, 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, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 62, 0, 0, -110, 0, 63, -110, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 65, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, -110, 0,
         // State 5
-        0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -167, -167, -167, -167, 16, -167, -167, -167, -167, -167, 0, 17, 0, -167, 0, 68, 0, -167, -167, 0, -167, -167, -167, 18, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 6
-        67, 0, 0, 14, 0, 15, 0, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
+        45, 0, 0, 8, 0, 21, 0, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 7
-        0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        45, 0, 0, 8, 0, 21, 0, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 22, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 8
-        0, 75, -120, -120, 76, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 77, 78, 0, 79, 80, 81, 0, -120, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 82, -120, 0,
+        45, 0, 0, 8, 0, 9, 0, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 9
-        0, 0, 83, -122, 0, 0, -122, 84, -122, -122, -122, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, -122, -122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, 0, -122, 0,
+        45, 0, 0, 8, 0, 21, 0, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 10
-        0, 0, 0, 86, 0, 0, -110, 0, 87, -110, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 89, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, -110, 0,
+        0, 0, 0, 77, 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, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 11
-        0, -170, -170, -170, -170, 23, -170, -170, -170, -170, -170, 0, 24, 0, -170, 0, 36, 0, -170, -170, 0, -170, -170, -170, 25, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        45, 0, 0, 8, 0, 21, 0, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 12
-        67, 0, 0, 14, 0, 27, 0, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
+        45, 0, 0, 8, 0, 21, 0, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 13
-        67, 0, 0, 14, 0, 27, 0, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 28, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
+        45, 0, 0, 8, 0, 21, 0, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 14
-        67, 0, 0, 14, 0, 15, 0, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
+        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 17, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 18, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 15
-        67, 0, 0, 14, 0, 27, 0, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
+        45, 0, 0, 8, 0, 9, -80, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 16
-        0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 17
-        0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        45, 0, 0, 8, 0, 9, 0, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 18
-        67, 0, 0, 14, 0, 27, 0, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
         // State 19
-        67, 0, 0, 14, 0, 27, 0, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
+        0, -167, -167, -167, -167, 16, -167, -167, -167, -167, -167, 0, 17, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, 18, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 20
-        67, 0, 0, 14, 0, 27, 0, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
+        45, 0, 0, 8, 0, 9, 0, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 21
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 24, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 25, -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,
+        45, 0, 0, 8, 0, 21, 0, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 22
-        67, 0, 0, 14, 0, 15, -80, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
+        0, 0, 0, 77, 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, 34, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 51, -119, -119, 52, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, 53, 54, 0, 55, 56, 57, 0, -119, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 58, -119, 0,
         // State 24
-        67, 0, 0, 14, 0, 15, 0, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
+        0, 0, 59, -121, 0, 0, -121, 60, -121, -121, -121, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, -121, 0,
         // State 25
-        0, -170, -170, -170, -170, 23, -170, -170, -170, -170, -170, 0, 24, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, 25, -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,
+        45, 0, 0, 8, 0, 9, -82, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 26
-        67, 0, 0, 14, 0, 15, 0, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
+        0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 27
-        67, 0, 0, 14, 0, 27, 0, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 28
-        0, 75, -119, -119, 76, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, 77, 78, 0, 79, 80, 81, 0, -119, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 82, -119, 0,
+        0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 29
-        0, 0, 83, -121, 0, 0, -121, 84, -121, -121, -121, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, -121, 0,
+        0, 0, 0, 77, 0, 0, 0, 78, 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, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 30
-        67, 0, 0, 14, 0, 15, -82, 16, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 35, 0, 0, 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 72,
+        0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 31
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -142, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 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, 0,
-        // State 34
+        // State 33
         0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, 0, -139, -139, -139, 0, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 0,
+        // State 34
+        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, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
         // State 35
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -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, -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 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, 47, 0,
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, -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 37
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -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, -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, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
         // State 39
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -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, -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, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -200, 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, -200, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
         // State 41
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 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, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
         // State 42
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
         // State 43
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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 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, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        -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, 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,
         // State 46
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 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, -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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, -49, 0,
+        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, -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,
         // State 48
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -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, -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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0,
+        -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, 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
-        0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
         // State 51
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
         // State 52
-        0, 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, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
         // State 53
-        0, 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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 54
-        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, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -62, 0, 0, -62, 0, -62, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, -62,
         // State 55
-        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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 56
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 57
-        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, 18, 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,
+        -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, 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 58
-        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, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
         // State 59
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, -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,
+        -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, 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 60
-        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, -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,
+        -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, 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 61
-        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, -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,
+        -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, 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 62
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
         // State 63
-        0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
         // State 64
-        0, -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, -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,
+        -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, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
         // State 65
-        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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 66
-        -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, 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,
+        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, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, 0,
         // State 67
-        -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, 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,
+        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, 0,
         // State 68
-        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, -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,
+        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, -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 69
-        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, -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, -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, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
         // State 70
-        0, -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, -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,
+        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, 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,
         // State 71
-        -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, 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,
+        0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 72
-        0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 73
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, -199, 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, -199, 0,
         // State 74
-        -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
+        0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 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, -108, 0,
         // State 75
-        -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, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 76
-        -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, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        0, 0, 0, -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, 0, -205, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 77
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 78
-        -62, 0, 0, -62, 0, -62, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, -62,
+        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, -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 79
-        -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, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        0, -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, -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
-        -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, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 81
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        0, 0, 0, 0, 0, 0, -79, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 82
-        -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, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        0, -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, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
         // State 83
-        -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, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 84
-        -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, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0,
         // State 85
-        -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, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -95, 0,
         // State 86
-        -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, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, -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 87
-        -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, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        0, -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, -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,
         // State 88
-        -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, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 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, -109, 0,
         // State 89
-        -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, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -200, 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, -200, 0,
         // State 90
-        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, -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,
+        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 91
-        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, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
+        0, 0, 0, -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, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 92
-        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, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        0, 0, 0, -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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 93
-        0, 0, 0, 0, 0, 0, 107, 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, -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, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 94
-        0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -81, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 95
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        0, -125, -125, -125, -125, 0, -125, -125, -125, -125, -125, 0, 0, 0, -125, 0, 0, 0, -125, -125, 0, -125, -125, -125, 0, -125, -125, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, -125, -125, 0,
         // State 96
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
+        -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
         // State 97
-        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, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 98
-        0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 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, -108, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 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,
         // State 99
-        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, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, -169, -169, -169, -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 100
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, 0, -174, 0, 0, 0, -174, -174, 0, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 101
-        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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -188, 0, 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, -188, 0,
         // State 102
-        0, 0, 0, 0, 0, 0, -79, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -49, 0,
         // State 103
-        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, -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,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // 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, 113, 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,
+        -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, -25,
         // State 105
-        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, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 106
-        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, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0,
         // State 107
-        0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 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, -109, 0,
+        0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 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, -203, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 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, -203, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
         // State 109
-        0, 0, 0, 0, 0, 0, -81, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
         // State 110
-        0, -125, -125, -125, -125, 0, -125, -125, -125, -125, -125, 0, 0, 0, -125, 0, 0, 0, -125, -125, 0, -125, -125, -125, 0, -125, -125, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, -125, -125, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 111
-        -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
+        0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 112
-        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, -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 113
-        -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, -25,
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -590918,13 +626408,13 @@
         // State 1
         0,
         // State 2
-        0,
+        -120,
         // State 3
-        0,
+        -122,
         // State 4
-        0,
+        -110,
         // State 5
-        0,
+        -167,
         // State 6
         0,
         // State 7
@@ -590942,7 +626432,7 @@
         // State 13
         0,
         // State 14
-        0,
+        -166,
         // State 15
         0,
         // State 16
@@ -590952,7 +626442,7 @@
         // State 18
         0,
         // State 19
-        0,
+        -167,
         // State 20
         0,
         // State 21
@@ -590960,9 +626450,9 @@
         // State 22
         0,
         // State 23
-        0,
+        -119,
         // State 24
-        0,
+        -121,
         // State 25
         0,
         // State 26
@@ -590978,39 +626468,39 @@
         // State 31
         0,
         // State 32
-        0,
+        -252,
         // State 33
-        -253,
+        -139,
         // State 34
-        0,
+        -189,
         // State 35
-        0,
+        -116,
         // State 36
-        0,
+        -118,
         // State 37
-        0,
+        -196,
         // State 38
         0,
         // State 39
-        0,
+        -219,
         // State 40
-        0,
+        -190,
         // State 41
-        0,
+        -111,
         // State 42
-        0,
+        -194,
         // State 43
-        0,
+        -195,
         // State 44
         0,
         // State 45
         0,
         // State 46
-        -191,
+        -217,
         // State 47
-        0,
+        -216,
         // State 48
-        0,
+        -218,
         // State 49
         0,
         // State 50
@@ -591046,23 +626536,23 @@
         // State 65
         0,
         // State 66
-        0,
+        -170,
         // State 67
         0,
         // State 68
-        0,
+        -115,
         // State 69
-        0,
+        -113,
         // State 70
         0,
         // State 71
         0,
         // State 72
-        0,
+        -114,
         // State 73
-        0,
+        -199,
         // State 74
-        0,
+        -108,
         // State 75
         0,
         // State 76
@@ -591070,15 +626560,15 @@
         // State 77
         0,
         // State 78
-        0,
+        -117,
         // State 79
-        0,
+        -171,
         // State 80
         0,
         // State 81
         0,
         // State 82
-        0,
+        -168,
         // State 83
         0,
         // State 84
@@ -591086,13 +626576,13 @@
         // State 85
         0,
         // State 86
-        0,
+        -112,
         // State 87
-        0,
+        -193,
         // State 88
-        0,
+        -109,
         // State 89
-        0,
+        -200,
         // State 90
         0,
         // State 91
@@ -591104,7 +626594,7 @@
         // State 94
         0,
         // State 95
-        0,
+        -125,
         // State 96
         0,
         // State 97
@@ -591112,11 +626602,11 @@
         // State 98
         0,
         // State 99
-        0,
+        -169,
         // State 100
         0,
         // State 101
-        0,
+        -188,
         // State 102
         0,
         // State 103
@@ -591132,96 +626622,93 @@
         // State 108
         0,
         // State 109
-        0,
+        -201,
         // State 110
         0,
         // State 111
         0,
         // State 112
-        0,
-        // State 113
-        0,
+        -202,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            14 => 30,
-            29 => 3,
-            32 => 4,
-            36 => 18,
-            37 => 19,
-            38 => 20,
-            40 => 101,
-            44 => 36,
+            14 => 25,
+            29 => 27,
+            32 => 29,
+            36 => 11,
+            37 => 12,
+            38 => 13,
+            40 => 80,
+            44 => 84,
             45 => match state {
-                7 => 73,
-                16 => 97,
-                _ => 39,
+                28 => 103,
+                30 => 110,
+                _ => 97,
             },
             48 => match state {
-                6 => 57,
-                22 => 102,
-                24 => 104,
-                30 => 109,
-                _ => 93,
+                1 => 34,
+                15 => 81,
+                17 => 83,
+                25 => 94,
+                _ => 70,
             },
-            49 => 58,
+            49 => 35,
             50 => match state {
-                12 => 91,
-                13 => 92,
-                15 => 95,
-                18 => 99,
-                27 => 105,
-                _ => 59,
+                6 => 68,
+                7 => 69,
+                9 => 72,
+                11 => 78,
+                21 => 86,
+                _ => 36,
             },
             51 => match state {
-                19 => 28,
-                _ => 8,
+                12 => 23,
+                _ => 2,
             },
             52 => match state {
-                20 => 29,
-                _ => 9,
+                13 => 24,
+                _ => 3,
             },
-            53 => 10,
-            55 => 60,
+            53 => 4,
+            55 => 37,
             60 => match state {
-                6 | 14 => 11,
-                0 => 31,
-                1 | 3 => 37,
-                2 | 4 | 7 | 16..=17 => 40,
-                5 => 51,
-                23 => 103,
-                _ => 25,
+                1 | 8 => 5,
+                0 | 18 | 27 => 31,
+                10 | 26 | 28..=30 => 73,
+                16 => 82,
+                22 => 89,
+                _ => 19,
             },
-            62 => 32,
-            74 => 61,
-            75 => match state {
-                21 => 100,
-                _ => 90,
+            62 => 38,
+            72 => 39,
+            73 => match state {
+                14 => 79,
+                _ => 66,
             },
-            76 => 21,
-            83 => match state {
-                6 => 62,
-                14 => 94,
-                _ => 33,
+            74 => 14,
+            81 => match state {
+                8 => 71,
+                _ => 40,
             },
-            84 => match state {
-                3 => 45,
-                _ => 38,
+            82 => match state {
+                18 => 85,
+                27 => 100,
+                _ => 32,
             },
-            86 => 63,
-            87 => 64,
-            88 => match state {
-                4 => 48,
-                17 => 98,
-                _ => 41,
+            84 => 41,
+            85 => 42,
+            87 => match state {
+                10 => 74,
+                29 => 105,
+                _ => 98,
             },
-            90 => match state {
-                5 => 52,
-                _ => 42,
+            89 => match state {
+                22 => 90,
+                _ => 75,
             },
-            92 => 5,
-            93 => 12,
-            94 => 65,
+            91 => 22,
+            92 => 6,
+            93 => 43,
             _ => 0,
         }
     }
@@ -591291,25 +626778,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -591317,7 +626806,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::StructInitExpr;
+        type Success = (ast::Ident, ast::StructInitField);
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -591335,7 +626824,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -591359,7 +626848,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -591367,7 +626856,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -591391,22 +626880,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -591467,10 +626958,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -591491,10 +626983,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -592471,25 +627964,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -592501,14 +627994,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -592520,19 +628013,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -592544,109 +628037,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -592658,31 +628151,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -592693,68 +628186,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -592765,26 +628258,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -592796,30 +628289,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -593003,13 +628496,13 @@
                     nonterminal_produced: 125,
                 }
             }
-            251 => {
+            251 => __state_machine::SimulatedReduce::Accept,
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 126,
+                    nonterminal_produced: 127,
                 }
             }
-            252 => __state_machine::SimulatedReduce::Accept,
             253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -593052,52 +628545,50 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct StructInitExprParser {
+    pub(crate) struct StructInitFieldParser {
         _priv: (),
     }
 
-    impl Default for StructInitExprParser { fn default() -> Self { Self::new() } }
-    impl StructInitExprParser {
-        pub(crate) fn new() -> StructInitExprParser {
-            StructInitExprParser {
+    impl Default for StructInitFieldParser { fn default() -> Self { Self::new() } }
+    impl StructInitFieldParser {
+        pub(crate) fn new() -> StructInitFieldParser {
+            StructInitFieldParser {
                 _priv: (),
             }
         }
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
-        ) -> Result<ast::StructInitExpr, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<(ast::Ident, ast::StructInitField), __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -593111,7 +628602,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -593125,802 +628616,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::StructInitExpr,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> Option<Result<(ast::Ident, ast::StructInitField),__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            252 => {
-                // __StructInitExpr = StructInitExpr => ActionFn(30);
-                let __sym0 = __pop_Variant58(__symbols);
+                // __StructInitField = StructInitField => ActionFn(29);
+                let __sym0 = __pop_Variant22(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action30::<>(__sym0);
+                let __nt = super::__action29::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            252 => {
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -594015,16 +629505,6 @@
             _ => __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)>
@@ -594035,13 +629515,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -594125,16 +629605,6 @@
             _ => __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)>
@@ -594155,13 +629625,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -594305,63 +629775,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -594375,13 +629845,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -594395,43 +629865,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -594445,13 +629915,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -594485,13 +629955,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -594545,13 +630015,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -594586,1281 +630056,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -595869,59 +631501,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -595930,59 +631570,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -595991,216 +631639,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -596211,44 +631887,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -596257,180 +631939,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -596440,30 +632144,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -596473,30 +632181,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -596506,62 +632218,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -596569,65 +632289,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -596636,18 +632364,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -596658,18 +632388,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -596683,18 +632415,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -596706,18 +632440,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -596730,18 +632466,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -596752,18 +632490,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -596776,18 +632516,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -596798,18 +632540,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -596821,18 +632565,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -596842,77 +632588,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -596921,18 +632677,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -596941,36 +632699,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -596980,36 +632742,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -597020,18 +632786,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -597041,20 +632809,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -597063,20 +632833,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -597084,30 +632856,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -597116,108 +632892,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -597230,15 +633020,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -597250,154 +633042,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -597406,94 +633165,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -597502,75 +633273,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -597579,15 +633360,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -597596,15 +633379,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -597613,35 +633398,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -597653,18 +633442,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -597673,65 +633464,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -597739,80 +633538,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -597822,95 +633631,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -597918,79 +633775,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -597999,15 +633866,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -598016,15 +633885,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -598033,181 +633904,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -598217,602 +634112,680 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
-    fn __reduce251<
+    fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 126)
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
-pub(crate) use self::__parse__StructInitExpr::StructInitExprParser;
+pub(crate) use self::__parse__StructInitField::StructInitFieldParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::needless_lifetimes, clippy::type_complexity, clippy::needless_return, clippy::too_many_arguments, clippy::never_loop, clippy::match_single_binding, clippy::needless_raw_string_hashes)]
-mod __parse__StructInitField {
+mod __parse__Term {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -598875,252 +634848,250 @@
         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),
+        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),
     }
     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, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        45, 0, 0, 8, 0, 9, 0, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
+        0, -167, -167, -167, -167, 5, -167, -167, -167, -167, -167, 0, 6, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, 7, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 2
-        0, 51, -120, -120, 52, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 53, 54, 0, 55, 56, 57, 0, -120, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 58, -120, 0,
+        46, 0, 0, 12, 0, 13, 0, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 3
-        0, 0, 59, -122, 0, 0, -122, 60, -122, -122, -122, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, -122, -122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, 0, -122, 0,
+        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 6, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 7, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 4
-        0, 0, 0, 62, 0, 0, -110, 0, 63, -110, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 65, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, -110, 0,
+        46, 0, 0, 12, 0, 13, -80, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 5
-        0, -170, -170, -170, -170, 16, -170, -170, -170, -170, -170, 0, 17, 0, -170, 0, 68, 0, -170, -170, 0, -170, -170, -170, 18, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 6
-        45, 0, 0, 8, 0, 21, 0, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
+        46, 0, 0, 12, 0, 13, 0, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 7
-        45, 0, 0, 8, 0, 21, 0, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 22, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
+        0, 55, -120, -120, 56, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 57, 58, 0, 59, 60, 61, 0, -120, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 62, -120, 0,
         // State 8
-        45, 0, 0, 8, 0, 9, 0, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
+        0, 0, 63, -122, 0, 0, -122, 64, -122, -122, -122, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, -122, -122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, 0, -122, 0,
         // State 9
-        45, 0, 0, 8, 0, 21, 0, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
+        0, 0, 0, 66, 0, 0, -110, 0, 67, -110, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 69, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, -110, 0,
         // State 10
-        0, 0, 0, 77, 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, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        46, 0, 0, 12, 0, 3, 0, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 11
-        45, 0, 0, 8, 0, 21, 0, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
+        46, 0, 0, 12, 0, 3, 0, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 20, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 12
-        45, 0, 0, 8, 0, 21, 0, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
+        46, 0, 0, 12, 0, 13, 0, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 13
-        45, 0, 0, 8, 0, 21, 0, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
+        46, 0, 0, 12, 0, 3, 0, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 14
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 17, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 18, -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,
+        46, 0, 0, 12, 0, 13, -82, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 15
-        45, 0, 0, 8, 0, 9, -80, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
+        0, 0, 0, 83, 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, 38, 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, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        46, 0, 0, 12, 0, 3, 0, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 17
-        45, 0, 0, 8, 0, 9, 0, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
+        46, 0, 0, 12, 0, 3, 0, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 18
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
+        46, 0, 0, 12, 0, 3, 0, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 19
-        0, -170, -170, -170, -170, 16, -170, -170, -170, -170, -170, 0, 17, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, 18, -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,
+        46, 0, 0, 12, 0, 3, 0, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 20
-        45, 0, 0, 8, 0, 9, 0, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
+        0, -167, -167, -167, -167, 5, -167, -167, -167, -167, -167, 0, 6, 0, -167, 0, 87, 0, -167, -167, 0, -167, -167, -167, 7, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 21
-        45, 0, 0, 8, 0, 21, 0, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
+        0, 0, 0, 83, 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, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 22
-        0, 0, 0, 77, 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, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 55, -119, -119, 56, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, 57, 58, 0, 59, 60, 61, 0, -119, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 62, -119, 0,
         // State 23
-        0, 51, -119, -119, 52, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, 53, 54, 0, 55, 56, 57, 0, -119, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 58, -119, 0,
+        0, 0, 63, -121, 0, 0, -121, 64, -121, -121, -121, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, -121, 0,
         // State 24
-        0, 0, 59, -121, 0, 0, -121, 60, -121, -121, -121, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, -121, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
         // State 25
-        45, 0, 0, 8, 0, 9, -82, 10, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 34, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
+        0, 0, 0, 83, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 26
-        0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 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, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 27
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 28
-        0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 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, 84, 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, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 29
-        0, 0, 0, 77, 0, 0, 0, 78, 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, 34, 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, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 30
-        0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        46, 0, 0, 12, 0, 13, 0, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 31
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -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, -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 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, 0, 0, 0, 0, 0, 0, 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, -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 33
-        0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, 0, -139, -139, -139, 0, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 34
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
+        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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
         // State 35
-        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, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
+        0, -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, -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 36
-        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, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
+        0, -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, -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 37
-        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, -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,
+        0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, 0, -139, -139, -139, 0, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 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, 19, 0, 0, 0, 0,
+        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, -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,
         // State 39
-        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, -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,
+        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, -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, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 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, -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 41
-        0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 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, 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,
         // State 42
-        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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, -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, -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 43
-        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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, -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 44
-        -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, 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,
+        0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
         // State 45
         -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, 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, -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, -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,
+        -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, 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,
         // State 47
-        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, -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,
+        -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, 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 48
-        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, -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,
+        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, -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 49
-        -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, 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,
+        0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 50
-        -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
+        0, 0, 0, 0, 0, 0, -79, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 51
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
         // State 52
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 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,
         // State 53
-        -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, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        0, -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, -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,
         // State 54
-        -62, 0, 0, -62, 0, -62, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, -62,
+        -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
         // State 55
-        -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, 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,
+        -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, 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 56
-        -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, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 57
-        -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, 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,
+        -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, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
         // State 58
-        -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, 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,
+        -62, 0, 0, -62, 0, -62, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, -62,
         // State 59
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        -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, 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 60
-        -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, 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,
+        -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, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
         // State 61
-        -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, 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,
+        -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, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
         // State 62
-        -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, 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,
+        -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, 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 63
-        -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, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
         // State 64
-        -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, 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,
+        -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, 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 65
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
         // State 66
-        0, -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, -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,
+        -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, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
         // State 67
-        0, 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, 0,
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 68
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, -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,
+        -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, 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 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, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 70
-        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, 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, -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, -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 71
-        0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, -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 72
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,
         // State 73
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, -200, 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, -200, 0,
+        0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 74
-        0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 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, -108, 0,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 75
-        0, 0, 0, -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, 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, -81, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 76
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -125, -125, -125, -125, 0, -125, -125, -125, -125, -125, 0, 0, 0, -125, 0, 0, 0, -125, -125, 0, -125, -125, -125, 0, -125, -125, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, -125, -125, 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, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
         // State 78
-        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, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, -169, -169, -169, -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 79
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, 0, -174, 0, 0, 0, -174, -174, 0, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, 0,
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, -199, 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, -199, 0,
         // State 80
-        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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 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, -108, 0,
         // State 81
-        0, 0, 0, 0, 0, 0, -79, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 82
-        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, -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,
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 83
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 84
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, -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 85
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0,
-        // State 86
         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, -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 86
+        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, 0,
         // State 87
-        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, -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 88
         0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 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, -109, 0,
+        // State 88
+        -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, -25,
         // State 89
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, -200, 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, -200, 0,
         // State 90
-        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, 0, -213, 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, 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, -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, 0, -207, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 92
-        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, 0, -208, 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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 93
-        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, 0, -209, 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, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 94
-        0, 0, 0, 0, 0, 0, -81, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0,
         // State 95
-        0, -125, -125, -125, -125, 0, -125, -125, -125, -125, -125, 0, 0, 0, -125, 0, 0, 0, -125, -125, 0, -125, -125, -125, 0, -125, -125, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, -125, -125, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 96
-        -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 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, 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, 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,
         // State 98
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 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,
         // State 99
-        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, -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,
+        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, 0,
         // State 100
         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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 101
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, -188, 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, -188, 0,
         // State 102
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 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, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 104
-        -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, -25,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
         // State 105
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
         // State 107
-        0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0,
         // State 108
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
         // State 109
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 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, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
         // State 110
-        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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
         // State 111
         0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 112
-        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 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, -203, 0,
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -599129,15 +635100,15 @@
         // State 0
         0,
         // State 1
-        0,
+        -167,
         // State 2
-        -120,
+        0,
         // State 3
-        -122,
+        -166,
         // State 4
-        -110,
+        0,
         // State 5
-        -170,
+        0,
         // State 6
         0,
         // State 7
@@ -599155,7 +635126,7 @@
         // State 13
         0,
         // State 14
-        -169,
+        0,
         // State 15
         0,
         // State 16
@@ -599165,7 +635136,7 @@
         // State 18
         0,
         // State 19
-        -170,
+        0,
         // State 20
         0,
         // State 21
@@ -599173,9 +635144,9 @@
         // State 22
         0,
         // State 23
-        -119,
+        0,
         // State 24
-        -121,
+        0,
         // State 25
         0,
         // State 26
@@ -599189,51 +635160,51 @@
         // State 30
         0,
         // State 31
-        0,
+        -196,
         // State 32
-        -254,
+        -219,
         // State 33
-        -139,
+        -253,
         // State 34
-        -192,
+        -194,
         // State 35
-        -116,
+        -195,
         // State 36
-        -118,
+        -217,
         // State 37
-        -199,
+        -139,
         // State 38
-        0,
+        -216,
         // State 39
-        -220,
+        -218,
         // State 40
-        -193,
+        -170,
         // State 41
-        -111,
+        0,
         // State 42
-        -197,
+        0,
         // State 43
-        -198,
+        0,
         // State 44
         0,
         // State 45
         0,
         // State 46
-        -218,
+        0,
         // State 47
-        -217,
+        0,
         // State 48
-        -219,
+        -171,
         // State 49
         0,
         // State 50
         0,
         // State 51
-        0,
+        -168,
         // State 52
         0,
         // State 53
-        0,
+        -193,
         // State 54
         0,
         // State 55
@@ -599259,39 +635230,39 @@
         // State 65
         0,
         // State 66
-        -173,
+        0,
         // State 67
         0,
         // State 68
-        -115,
+        0,
         // State 69
-        -113,
+        0,
         // State 70
         0,
         // State 71
         0,
         // State 72
-        -114,
+        0,
         // State 73
-        -200,
+        0,
         // State 74
-        -108,
+        0,
         // State 75
         0,
         // State 76
-        0,
+        -125,
         // State 77
         0,
         // State 78
-        -117,
+        -169,
         // State 79
-        -174,
+        0,
         // State 80
         0,
         // State 81
         0,
         // State 82
-        -171,
+        0,
         // State 83
         0,
         // State 84
@@ -599299,13 +635270,13 @@
         // State 85
         0,
         // State 86
-        -112,
+        0,
         // State 87
-        -196,
+        0,
         // State 88
-        -109,
+        0,
         // State 89
-        -201,
+        0,
         // State 90
         0,
         // State 91
@@ -599317,7 +635288,7 @@
         // State 94
         0,
         // State 95
-        -125,
+        0,
         // State 96
         0,
         // State 97
@@ -599325,11 +635296,11 @@
         // State 98
         0,
         // State 99
-        -172,
+        0,
         // State 100
         0,
         // State 101
-        -191,
+        0,
         // State 102
         0,
         // State 103
@@ -599345,93 +635316,95 @@
         // State 108
         0,
         // State 109
-        -202,
+        0,
         // State 110
         0,
         // State 111
         0,
         // State 112
-        -203,
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            14 => 25,
+            14 => 14,
             29 => 27,
-            32 => 29,
-            36 => 11,
-            37 => 12,
-            38 => 13,
-            40 => 80,
-            44 => 84,
+            32 => 28,
+            36 => 16,
+            37 => 17,
+            38 => 18,
+            40 => 49,
+            44 => 94,
             45 => match state {
-                28 => 103,
-                30 => 110,
+                26 => 99,
+                29 => 106,
                 _ => 97,
             },
             48 => match state {
-                1 => 34,
-                15 => 81,
-                17 => 83,
-                25 => 94,
-                _ => 70,
+                4 => 50,
+                6 => 52,
+                14 => 75,
+                30 => 109,
+                _ => 41,
             },
-            49 => 35,
+            49 => 42,
             50 => match state {
-                6 => 68,
-                7 => 69,
-                9 => 72,
-                11 => 78,
-                21 => 86,
-                _ => 36,
+                10 => 70,
+                11 => 71,
+                13 => 74,
+                16 => 84,
+                19 => 85,
+                _ => 43,
             },
             51 => match state {
-                12 => 23,
-                _ => 2,
+                17 => 22,
+                _ => 7,
             },
             52 => match state {
-                13 => 24,
-                _ => 3,
+                18 => 23,
+                _ => 8,
             },
-            53 => 4,
-            55 => 37,
+            53 => 9,
+            55 => 31,
             60 => match state {
-                1 | 8 => 5,
-                0 | 18 | 27 => 31,
-                10 | 26 | 28..=30 => 73,
-                16 => 82,
-                22 => 89,
-                _ => 19,
-            },
-            62 => 38,
-            74 => 39,
-            75 => match state {
-                14 => 79,
-                _ => 66,
+                12 | 30 => 20,
+                5 => 51,
+                15 | 25..=26 | 28..=29 => 79,
+                21 => 89,
+                24 | 27 => 95,
+                _ => 1,
             },
-            76 => 14,
-            83 => match state {
-                8 => 71,
+            62 => 72,
+            72 => 32,
+            73 => match state {
+                3 => 48,
                 _ => 40,
             },
-            84 => match state {
-                18 => 85,
+            74 => 3,
+            81 => match state {
+                30 => 110,
+                _ => 73,
+            },
+            82 => match state {
                 27 => 100,
-                _ => 32,
+                _ => 96,
             },
-            86 => 41,
-            87 => 42,
-            88 => match state {
-                10 => 74,
-                29 => 105,
+            84 => match state {
+                0 => 33,
+                _ => 44,
+            },
+            85 => 34,
+            87 => match state {
+                15 => 80,
+                28 => 103,
                 _ => 98,
             },
-            90 => match state {
-                22 => 90,
-                _ => 75,
+            89 => match state {
+                21 => 90,
+                _ => 81,
             },
-            92 => 22,
-            93 => 6,
-            94 => 43,
+            91 => 21,
+            92 => 10,
+            93 => 35,
             _ => 0,
         }
     }
@@ -599501,25 +635474,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -599527,7 +635502,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = (ast::Ident, ast::StructInitField);
+        type Success = ast::Expression;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -599545,7 +635520,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -599569,7 +635544,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -599577,7 +635552,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -599601,22 +635576,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -599677,10 +635654,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -599701,10 +635679,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -600681,25 +636660,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -600711,14 +636690,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -600730,19 +636709,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -600754,109 +636733,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -600868,31 +636847,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -600903,68 +636882,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -600975,26 +636954,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -601006,30 +636985,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -601219,13 +637198,13 @@
                     nonterminal_produced: 126,
                 }
             }
-            252 => {
+            252 => __state_machine::SimulatedReduce::Accept,
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 127,
+                    nonterminal_produced: 128,
                 }
             }
-            253 => __state_machine::SimulatedReduce::Accept,
             254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -601262,52 +637241,50 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct StructInitFieldParser {
+    pub(crate) struct TermParser {
         _priv: (),
     }
 
-    impl Default for StructInitFieldParser { fn default() -> Self { Self::new() } }
-    impl StructInitFieldParser {
-        pub(crate) fn new() -> StructInitFieldParser {
-            StructInitFieldParser {
+    impl Default for TermParser { fn default() -> Self { Self::new() } }
+    impl TermParser {
+        pub(crate) fn new() -> TermParser {
+            TermParser {
                 _priv: (),
             }
         }
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
-        ) -> Result<(ast::Ident, ast::StructInitField), __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::Expression, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -601321,7 +637298,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -601335,802 +637312,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> Option<Result<(ast::Ident, ast::StructInitField),__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> Option<Result<ast::Expression,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            253 => {
-                // __StructInitField = StructInitField => ActionFn(29);
-                let __sym0 = __pop_Variant22(__symbols);
+                // __Term = Term => ActionFn(17);
+                let __sym0 = __pop_Variant14(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action29::<>(__sym0);
+                let __nt = super::__action17::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            253 => {
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -602225,16 +638201,6 @@
             _ => __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)>
@@ -602245,13 +638211,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -602335,16 +638301,6 @@
             _ => __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)>
@@ -602365,13 +638321,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -602515,63 +638471,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -602585,13 +638541,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -602605,43 +638561,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -602655,13 +638611,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -602695,13 +638651,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -602755,13 +638711,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -602796,1281 +638752,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -604079,59 +640197,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -604140,59 +640266,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -604201,216 +640335,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -604421,44 +640583,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -604467,180 +640635,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -604650,30 +640840,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -604683,30 +640877,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -604716,62 +640914,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -604779,65 +640985,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -604846,18 +641060,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -604868,18 +641084,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -604893,18 +641111,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -604916,18 +641136,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -604940,18 +641162,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -604962,18 +641186,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -604986,18 +641212,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -605008,18 +641236,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -605031,18 +641261,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -605052,77 +641284,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -605131,18 +641373,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -605151,36 +641395,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -605190,36 +641438,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -605230,18 +641482,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -605251,20 +641505,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -605273,20 +641529,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -605294,30 +641552,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -605326,108 +641588,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -605440,15 +641716,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -605460,154 +641738,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -605616,94 +641861,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -605712,75 +641969,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -605789,15 +642056,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -605806,15 +642075,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -605823,35 +642094,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -605863,18 +642138,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -605883,65 +642160,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -605949,80 +642234,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -606032,95 +642327,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -606128,79 +642471,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -606209,15 +642562,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -606226,15 +642581,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -606243,181 +642600,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -606427,602 +642808,680 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
-    fn __reduce252<
+    fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 127)
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
-pub(crate) use self::__parse__StructInitField::StructInitFieldParser;
+pub(crate) use self::__parse__Term::TermParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::needless_lifetimes, clippy::type_complexity, clippy::needless_return, clippy::too_many_arguments, clippy::never_loop, clippy::match_single_binding, clippy::needless_raw_string_hashes)]
-mod __parse__Term {
+mod __parse__Term0 {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -607085,192 +643544,190 @@
         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),
+        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),
     }
     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, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 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, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, -170, -170, -170, -170, 5, -170, -170, -170, -170, -170, 0, 6, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, 7, -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, -167, -167, -167, -167, 4, -167, -167, -167, -167, -167, 0, 5, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, 6, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 2
-        46, 0, 0, 12, 0, 13, 0, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
+        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 5, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 6, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 3
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 6, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 7, -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,
+        48, 0, 0, 12, 0, 13, -80, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 4
-        46, 0, 0, 12, 0, 13, -80, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 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, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 5
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        48, 0, 0, 12, 0, 13, 0, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 6
-        46, 0, 0, 12, 0, 13, 0, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
+        48, 0, 0, 12, 0, 13, -82, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 7
-        0, 55, -120, -120, 56, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 57, 58, 0, 59, 60, 61, 0, -120, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 62, -120, 0,
+        0, 56, -120, -120, 57, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 58, 59, 0, 60, 61, 62, 0, -120, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 63, -120, 0,
         // State 8
-        0, 0, 63, -122, 0, 0, -122, 64, -122, -122, -122, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, -122, -122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, 0, -122, 0,
+        0, 0, 64, -122, 0, 0, -122, 65, -122, -122, -122, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, -122, -122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, 0, -122, 0,
         // State 9
-        0, 0, 0, 66, 0, 0, -110, 0, 67, -110, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 69, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, -110, 0,
+        0, 0, 0, 67, 0, 0, -110, 0, 68, -110, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 70, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, -110, 0,
         // State 10
-        46, 0, 0, 12, 0, 3, 0, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
+        48, 0, 0, 12, 0, 19, 0, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 11
-        46, 0, 0, 12, 0, 3, 0, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 20, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
+        48, 0, 0, 12, 0, 19, 0, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 20, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 12
-        46, 0, 0, 12, 0, 13, 0, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
+        48, 0, 0, 12, 0, 13, 0, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 13
-        46, 0, 0, 12, 0, 3, 0, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
+        48, 0, 0, 12, 0, 19, 0, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 14
-        46, 0, 0, 12, 0, 13, -82, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
+        0, 0, 0, 83, 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, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 15
-        0, 0, 0, 83, 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, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        48, 0, 0, 12, 0, 19, 0, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 16
-        46, 0, 0, 12, 0, 3, 0, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
+        48, 0, 0, 12, 0, 19, 0, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 17
-        46, 0, 0, 12, 0, 3, 0, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
+        48, 0, 0, 12, 0, 19, 0, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 18
-        46, 0, 0, 12, 0, 3, 0, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
+        48, 0, 0, 12, 0, 13, 0, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 19
-        46, 0, 0, 12, 0, 3, 0, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
+        48, 0, 0, 12, 0, 19, 0, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 20
-        0, -170, -170, -170, -170, 5, -170, -170, -170, -170, -170, 0, 6, 0, -170, 0, 87, 0, -170, -170, 0, -170, -170, -170, 7, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        0, -167, -167, -167, -167, 4, -167, -167, -167, -167, -167, 0, 5, 0, -167, 0, 88, 0, -167, -167, 0, -167, -167, -167, 6, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 21
-        0, 0, 0, 83, 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, 38, 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, 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, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 22
-        0, 55, -119, -119, 56, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, 57, 58, 0, 59, 60, 61, 0, -119, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 62, -119, 0,
+        0, 56, -119, -119, 57, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, 58, 59, 0, 60, 61, 62, 0, -119, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 63, -119, 0,
         // State 23
-        0, 0, 63, -121, 0, 0, -121, 64, -121, -121, -121, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, -121, 0,
+        0, 0, 64, -121, 0, 0, -121, 65, -121, -121, -121, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, -121, 0,
         // State 24
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
         // State 25
-        0, 0, 0, 83, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 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, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 26
-        0, 0, 0, 83, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 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, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 27
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 28
-        0, 0, 0, 83, 0, 0, 0, 84, 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, 38, 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, 84, 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, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 29
-        0, 0, 0, 83, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 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, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 30
-        46, 0, 0, 12, 0, 13, 0, 14, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 48,
+        48, 0, 0, 12, 0, 13, 0, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 31
-        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, -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,
+        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, -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 32
-        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, -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,
+        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, -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 33
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 34
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, -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, -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 35
-        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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        0, -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, -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 36
-        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, -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, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, 0, -139, -139, -139, 0, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 0,
+        // State 37
+        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, -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,
         // State 38
-        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, -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, -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, -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, -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, -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,
+        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, -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 40
-        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, -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,
+        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, -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 41
-        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, 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, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 42
-        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, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
+        0, 0, 0, 0, 0, 0, -79, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 43
-        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, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, -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 44
-        0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, -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 45
-        -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, 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,
+        0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
         // State 46
-        -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, 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,
+        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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
         // State 47
-        -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, 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,
+        -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, 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, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, 0, -174, 0, 0, 0, -174, -174, 0, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, 0,
+        -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, 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,
         // State 49
-        0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -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, 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
-        0, 0, 0, 0, 0, 0, -79, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -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, -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 51
-        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, -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,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 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,
         // 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, 79, 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, -81, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 53
-        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, -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, -125, -125, -125, -125, 0, -125, -125, -125, -125, -125, 0, 0, 0, -125, 0, 0, 0, -125, -125, 0, -125, -125, -125, 0, -125, -125, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, -125, -125, 0,
         // State 54
-        -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
+        -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
         // State 55
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
         // State 56
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
         // State 57
-        -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, 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,
+        -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, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
         // State 58
-        -62, 0, 0, -62, 0, -62, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, -62,
+        -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, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
         // State 59
-        -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, 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,
+        -62, 0, 0, -62, 0, -62, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, -62,
         // State 60
-        -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, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 61
-        -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, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
         // State 62
-        -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, 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,
+        -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, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
         // State 63
-        -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, 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,
+        -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, 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
-        -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, 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,
+        -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, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
         // State 65
-        -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, 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,
+        -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, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 66
-        -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, 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,
+        -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, 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 67
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        -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, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
         // State 68
-        -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, 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,
+        -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, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
         // State 69
-        -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, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 70
-        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, -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,
+        -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, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
         // State 71
-        0, -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, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        0, -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, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
         // State 72
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,
+        0, -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, -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 73
-        0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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,
         // State 74
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,
         // State 75
-        0, 0, 0, 0, 0, 0, -81, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 76
-        0, -125, -125, -125, -125, 0, -125, -125, -125, -125, -125, 0, 0, 0, -125, 0, 0, 0, -125, -125, 0, -125, -125, -125, 0, -125, -125, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, -125, -125, 0,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 77
-        -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
+        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, -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 78
-        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, -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,
+        -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, -25,
         // State 79
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, -200, 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, -200, 0,
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, -199, 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, -199, 0,
         // State 80
         0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 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, -108, 0,
         // State 81
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 82
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 83
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 84
@@ -607278,21 +643735,21 @@
         // State 85
         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, -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 86
-        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, 0,
+        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, -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,
         // State 87
-        0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 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, -109, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 88
-        -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, -25,
+        0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 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, -109, 0,
         // State 89
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, -200, 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, -200, 0,
         // State 90
-        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, 0, -213, 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, 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, -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, 0, -207, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 92
-        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, 0, -208, 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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 93
-        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, 0, -209, 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, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 94
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0,
         // State 95
@@ -607308,13 +643765,13 @@
         // State 100
         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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 101
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, -188, 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, -188, 0,
         // State 102
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
         // State 103
         0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 104
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
         // State 105
         0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 106
@@ -607324,13 +643781,13 @@
         // State 108
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
         // State 109
-        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, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
         // State 110
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
         // State 111
         0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 112
-        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 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, -203, 0,
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -607339,11 +643796,11 @@
         // State 0
         0,
         // State 1
-        -170,
+        -167,
         // State 2
-        0,
+        -166,
         // State 3
-        -169,
+        0,
         // State 4
         0,
         // State 5
@@ -607399,25 +643856,25 @@
         // State 30
         0,
         // State 31
-        -199,
+        -196,
         // State 32
-        -220,
+        -219,
         // State 33
-        -255,
+        -254,
         // State 34
-        -197,
+        -195,
         // State 35
-        -198,
+        -217,
         // State 36
-        -218,
-        // State 37
         -139,
+        // State 37
+        -216,
         // State 38
-        -217,
+        -218,
         // State 39
-        -219,
+        -170,
         // State 40
-        -173,
+        -171,
         // State 41
         0,
         // State 42
@@ -607433,17 +643890,17 @@
         // State 47
         0,
         // State 48
-        -174,
+        0,
         // State 49
         0,
         // State 50
-        0,
+        -168,
         // State 51
-        -171,
+        0,
         // State 52
         0,
         // State 53
-        -196,
+        -125,
         // State 54
         0,
         // State 55
@@ -607489,11 +643946,11 @@
         // State 75
         0,
         // State 76
-        -125,
-        // State 77
         0,
+        // State 77
+        -169,
         // State 78
-        -172,
+        0,
         // State 79
         0,
         // State 80
@@ -607565,13 +644022,13 @@
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            14 => 14,
+            14 => 6,
             29 => 27,
             32 => 28,
-            36 => 16,
-            37 => 17,
-            38 => 18,
-            40 => 49,
+            36 => 15,
+            37 => 16,
+            38 => 17,
+            40 => 41,
             44 => 94,
             45 => match state {
                 26 => 99,
@@ -607579,71 +644036,71 @@
                 _ => 97,
             },
             48 => match state {
-                4 => 50,
+                3 => 42,
+                5 => 51,
                 6 => 52,
-                14 => 75,
                 30 => 109,
-                _ => 41,
+                _ => 73,
             },
-            49 => 42,
+            49 => 43,
             50 => match state {
-                10 => 70,
-                11 => 71,
-                13 => 74,
-                16 => 84,
+                10 => 71,
+                11 => 72,
+                13 => 76,
+                15 => 84,
                 19 => 85,
-                _ => 43,
+                _ => 44,
             },
             51 => match state {
-                17 => 22,
+                16 => 22,
                 _ => 7,
             },
             52 => match state {
-                18 => 23,
+                17 => 23,
                 _ => 8,
             },
             53 => 9,
             55 => 31,
             60 => match state {
                 12 | 30 => 20,
-                5 => 51,
-                15 | 25..=26 | 28..=29 => 79,
+                4 => 50,
+                14 | 25..=26 | 28..=29 => 79,
                 21 => 89,
                 24 | 27 => 95,
                 _ => 1,
             },
-            62 => 72,
-            74 => 32,
-            75 => match state {
-                3 => 48,
-                _ => 40,
+            62 => 74,
+            72 => 32,
+            73 => match state {
+                2 => 40,
+                _ => 39,
             },
-            76 => 3,
-            83 => match state {
+            74 => 2,
+            81 => match state {
                 30 => 110,
-                _ => 73,
+                _ => 75,
             },
-            84 => match state {
+            82 => match state {
                 27 => 100,
                 _ => 96,
             },
-            86 => match state {
+            84 => 45,
+            85 => match state {
                 0 => 33,
-                _ => 44,
+                _ => 46,
             },
-            87 => 34,
-            88 => match state {
-                15 => 80,
+            87 => match state {
+                14 => 80,
                 28 => 103,
                 _ => 98,
             },
-            90 => match state {
+            89 => match state {
                 21 => 90,
                 _ => 81,
             },
-            92 => 21,
-            93 => 10,
-            94 => 35,
+            91 => 21,
+            92 => 10,
+            93 => 34,
             _ => 0,
         }
     }
@@ -607713,25 +644170,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -607757,7 +644216,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -607781,7 +644240,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -607789,7 +644248,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -607813,22 +644272,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -607889,10 +644350,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -607913,10 +644375,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -608893,25 +645356,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -608923,14 +645386,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -608942,19 +645405,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -608966,109 +645429,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -609080,31 +645543,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -609115,68 +645578,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -609187,26 +645650,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -609218,30 +645681,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -609437,13 +645900,13 @@
                     nonterminal_produced: 127,
                 }
             }
-            253 => {
+            253 => __state_machine::SimulatedReduce::Accept,
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 128,
+                    nonterminal_produced: 129,
                 }
             }
-            254 => __state_machine::SimulatedReduce::Accept,
             255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -609474,33 +645937,29 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct TermParser {
+    pub(crate) struct Term0Parser {
         _priv: (),
     }
 
-    impl Default for TermParser { fn default() -> Self { Self::new() } }
-    impl TermParser {
-        pub(crate) fn new() -> TermParser {
-            TermParser {
+    impl Default for Term0Parser { fn default() -> Self { Self::new() } }
+    impl Term0Parser {
+        pub(crate) fn new() -> Term0Parser {
+            Term0Parser {
                 _priv: (),
             }
         }
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::Expression, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -609508,18 +645967,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -609533,7 +645994,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -609547,802 +646008,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::Expression,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            254 => {
-                // __Term = Term => ActionFn(17);
+                // __Term0 = Term0 => ActionFn(16);
                 let __sym0 = __pop_Variant14(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action17::<>(__sym0);
+                let __nt = super::__action16::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            254 => {
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -610437,16 +646897,6 @@
             _ => __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)>
@@ -610457,13 +646907,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -610547,16 +646997,6 @@
             _ => __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)>
@@ -610577,13 +647017,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -610727,63 +647167,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -610797,13 +647237,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -610817,43 +647257,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -610867,13 +647307,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -610907,13 +647347,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -610967,13 +647407,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -611008,1281 +647448,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -612291,59 +648893,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -612352,59 +648962,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -612413,216 +649031,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -612633,44 +649279,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -612679,180 +649331,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -612862,30 +649536,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -612895,30 +649573,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -612928,62 +649610,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -612991,65 +649681,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -613058,18 +649756,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -613080,18 +649780,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -613105,18 +649807,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -613128,18 +649832,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -613152,18 +649858,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -613174,18 +649882,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -613198,18 +649908,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -613220,18 +649932,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -613243,18 +649957,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -613264,77 +649980,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -613343,18 +650069,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -613363,36 +650091,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -613402,36 +650134,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -613442,18 +650178,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -613463,20 +650201,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -613485,20 +650225,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -613506,30 +650248,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -613538,108 +650284,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -613652,15 +650412,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -613672,154 +650434,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -613828,94 +650557,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -613924,75 +650665,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -614001,15 +650752,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -614018,15 +650771,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -614035,35 +650790,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -614075,18 +650834,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -614095,65 +650856,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -614161,80 +650930,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -614244,95 +651023,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -614340,79 +651167,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -614421,15 +651258,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -614438,15 +651277,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -614455,181 +651296,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -614639,602 +651504,680 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
-    fn __reduce253<
+    fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 128)
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
-pub(crate) use self::__parse__Term::TermParser;
+pub(crate) use self::__parse__Term0::Term0Parser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::needless_lifetimes, clippy::type_complexity, clippy::needless_return, clippy::too_many_arguments, clippy::never_loop, clippy::match_single_binding, clippy::needless_raw_string_hashes)]
-mod __parse__Term0 {
+mod __parse__TopLevelModule {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -615297,252 +652240,588 @@
         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),
+        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),
     }
     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, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 101, 5, 0, 0, 0, 0, 0, 0, 0, 6, 0, 102, 0, 0, 7, 8, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, -170, -170, -170, -170, 4, -170, -170, -170, -170, -170, 0, 5, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, 6, -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, 0, 0, 0, 0, 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, 101, 5, 0, 0, 0, 0, 0, 0, 0, 6, 0, 102, 0, 0, 7, 8, 0, 0, 0, 0, 0, 0,
         // State 2
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 5, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 6, -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, 0, 0, 0, 0, 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, 101, 5, 0, 0, 0, 0, 0, 0, 0, 6, 0, 102, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
         // State 3
-        48, 0, 0, 12, 0, 13, -80, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 4
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 5
-        48, 0, 0, 12, 0, 13, 0, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 6
-        48, 0, 0, 12, 0, 13, -82, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 7
-        0, 56, -120, -120, 57, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 58, 59, 0, 60, 61, 62, 0, -120, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 63, -120, 0,
+        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, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, 0, 0, 0,
         // State 8
-        0, 0, 64, -122, 0, 0, -122, 65, -122, -122, -122, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, -122, -122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, 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, 4, 0, 101, 5, 0, 0, 0, 0, 0, 0, 0, 6, 0, 102, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
         // State 9
-        0, 0, 0, 67, 0, 0, -110, 0, 68, -110, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 70, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, -110, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 10
-        48, 0, 0, 12, 0, 19, 0, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 11
-        48, 0, 0, 12, 0, 19, 0, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 20, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, 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, -107, 0, 0, 0, 0,
         // State 12
-        48, 0, 0, 12, 0, 13, 0, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
+        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, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 13
-        48, 0, 0, 12, 0, 19, 0, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
+        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, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 14
-        0, 0, 0, 83, 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, 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, 4, 0, 101, 5, 0, 0, 0, 0, 0, 0, 0, 6, 0, 102, 0, 0, 7, 8, 0, 0, 0, 0, 0, 0,
         // State 15
-        48, 0, 0, 12, 0, 19, 0, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 16
-        48, 0, 0, 12, 0, 19, 0, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
+        0, 0, 0, 121, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 17
-        48, 0, 0, 12, 0, 19, 0, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0,
         // State 18
-        48, 0, 0, 12, 0, 13, 0, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -88, 0,
         // State 19
-        48, 0, 0, 12, 0, 19, 0, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
+        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, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 20
-        0, -170, -170, -170, -170, 4, -170, -170, -170, -170, -170, 0, 5, 0, -170, 0, 88, 0, -170, -170, 0, -170, -170, -170, 6, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 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, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 21
-        0, 0, 0, 83, 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, 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, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 22
-        0, 56, -119, -119, 57, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, 58, 59, 0, 60, 61, 62, 0, -119, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 63, -119, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 101, 5, 0, 0, 0, 0, 0, 0, 0, 6, 0, 102, 0, 0, 7, 8, 0, 0, 0, 0, 0, 0,
         // State 23
-        0, 0, 64, -121, 0, 0, -121, 65, -121, -121, -121, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 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, 4, 0, 101, 5, 0, 0, 0, 0, 0, 0, 0, 6, 0, 102, 0, 0, 7, 0, 0, 0, 0, 0, 143, 0,
         // State 24
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 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, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 25
-        0, 0, 0, 83, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 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, 122, 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, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 26
-        0, 0, 0, 83, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0,
         // State 27
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90, 0,
         // State 28
-        0, 0, 0, 83, 0, 0, 0, 84, 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, 37, 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, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 29
-        0, 0, 0, 83, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        163, 0, 0, 41, 0, 42, 0, 43, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 106, 0, 0, 166, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 168,
         // State 30
-        48, 0, 0, 12, 0, 13, 0, 14, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 0, 0, 38, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 50,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0,
         // State 31
-        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, -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,
+        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, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 32
-        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, -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,
+        0, 0, 0, 0, 0, 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, 101, 5, 0, 0, 0, 0, 0, 0, 0, 6, 0, 102, 0, 0, 7, 0, 0, 0, 0, 0, 173, 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, 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, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 34
-        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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        0, 0, 0, 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, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 35
-        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, -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,
+        0, 182, -120, -120, 183, 0, -120, -120, -120, -120, -120, 0, 0, -120, -120, 0, 0, -120, 184, 185, 0, 186, 187, 188, 0, -120, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, -120, 189, -120, 0,
         // State 36
-        0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, 0, -139, -139, -139, 0, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 0,
+        0, 0, 190, -122, 0, 0, -122, 191, -122, -122, -122, 0, 0, -122, 192, 0, 0, -122, 0, 0, 0, 0, 0, 0, 0, -122, -122, -122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, -122, 0, -122, 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, -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, 0, 0, 193, 0, 0, -110, 0, 194, -110, 195, 0, 0, -110, 0, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, 196, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 197, 0, -110, 0,
         // State 38
-        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, -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,
+        0, -167, -167, -167, -167, 54, -167, -167, -167, -167, -167, 0, 55, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, 56, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
         // State 39
-        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, -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,
+        163, 0, 0, 41, 0, 57, 0, 43, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 106, 0, 0, 166, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 168,
         // State 40
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, 0, -174, 0, 0, 0, -174, -174, 0, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, 0,
+        163, 0, 0, 41, 0, 57, 0, 43, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 106, 0, 0, 166, 0, 0, 0, 58, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 168,
         // State 41
-        0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        163, 0, 0, 41, 0, 42, 0, 43, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 106, 0, 0, 166, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 168,
         // State 42
-        0, 0, 0, 0, 0, 0, -79, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        163, 0, 0, 41, 0, 57, 0, 43, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 106, 0, 0, 166, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 168,
         // State 43
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
+        0, 0, 0, 121, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 44
-        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, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
+        0, 0, 0, 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, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 45
-        0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
+        0, 0, 0, 0, 0, 0, 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 106, 65, 0, 0, 66, 0, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 0, 0,
         // State 46
-        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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0,
         // State 47
-        -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, 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,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0,
         // State 48
-        -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, 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,
+        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, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 49
-        -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, 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,
+        163, 0, 0, 41, 0, 57, 0, 43, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 106, 0, 0, 166, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 168,
         // State 50
-        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, -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,
+        163, 0, 0, 41, 0, 57, 0, 43, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 106, 0, 0, 166, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 168,
         // State 51
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 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,
+        163, 0, 0, 41, 0, 57, 0, 43, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 106, 0, 0, 166, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 168,
         // State 52
-        0, 0, 0, 0, 0, 0, -81, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 55, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, 56, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
         // State 53
-        0, -125, -125, -125, -125, 0, -125, -125, -125, -125, -125, 0, 0, 0, -125, 0, 0, 0, -125, -125, 0, -125, -125, -125, 0, -125, -125, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, -125, -125, 0,
+        163, 0, 0, 41, 0, 42, -80, 43, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 106, 0, 0, 166, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 168,
         // State 54
-        -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 55
-        -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
+        163, 0, 0, 41, 0, 42, 0, 43, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 106, 0, 0, 166, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 168,
         // State 56
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        163, 0, 0, 41, 0, 42, 0, 43, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 106, 0, 0, 166, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 168,
         // State 57
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        163, 0, 0, 41, 0, 57, 0, 43, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 106, 0, 0, 166, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 168,
         // State 58
-        -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, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        0, -167, -167, -167, -167, 54, -167, -167, -167, -167, -167, 0, 55, 0, -167, 0, 229, -167, -167, -167, 0, -167, -167, -167, 56, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 59
-        -62, 0, 0, -62, 0, -62, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, -62,
+        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, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 60
-        -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, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0,
         // State 61
-        -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, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        0, 0, 0, 0, 0, 0, 0, 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, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 62
-        -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, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        0, 0, 0, 0, 0, 0, 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 106, 65, 0, 0, 66, 0, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 240, 0,
         // 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, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 64
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        163, 0, 0, 41, 0, 42, 0, 43, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 106, 0, 0, 166, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 168,
         // State 65
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 66
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        163, 0, 0, 41, 0, 42, 0, 43, 0, 0, 164, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 106, 0, 0, 166, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 168,
         // State 67
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        163, 0, 0, 41, 0, 42, 0, 43, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 106, 0, 0, 166, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 168,
         // State 68
-        -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, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        0, 0, 0, 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, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 69
-        -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, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        0, 182, -119, -119, 183, 0, -119, -119, -119, -119, -119, 0, 0, -119, -119, 0, 0, -119, 184, 185, 0, 186, 187, 188, 0, -119, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, 189, -119, 0,
         // State 70
-        -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, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        0, 0, 190, -121, 0, 0, -121, 191, -121, -121, -121, 0, 0, -121, 192, 0, 0, -121, 0, 0, 0, 0, 0, 0, 0, -121, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, 0, -121, 0,
         // State 71
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, -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,
+        163, 0, 0, 41, 0, 42, -82, 43, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 106, 0, 0, 166, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 168,
         // State 72
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
         // State 73
-        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, 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, 55, 0, 0, 0, 0, 0, 0, 0, -167, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 74
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,
+        163, 0, 0, 41, 0, 42, 0, 43, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 106, 0, 0, 166, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 168,
         // State 75
-        0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0,
         // State 76
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 77
-        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, -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,
+        0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0,
         // State 78
-        -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, -25,
+        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, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 79
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, -200, 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, -200, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0,
         // State 80
-        0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 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, -108, 0,
+        0, 0, 0, 121, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 81
-        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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 82
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        163, 0, 0, 41, 0, 42, 0, 43, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 106, 0, 0, 166, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 168,
         // 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, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        163, 0, 0, 41, 0, 42, 0, 43, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 106, 0, 0, 166, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 168,
         // State 84
-        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, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
+        0, 0, 0, 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, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 85
-        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, -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,
+        163, 0, 0, 41, 0, 42, 0, 43, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 106, 0, 0, 166, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 168,
         // State 86
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 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, 46, 0, 0, 0, 0,
         // State 87
-        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, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0,
         // State 88
-        0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 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, -109, 0,
+        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, 0, 106, 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, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
+        163, 0, 0, 41, 0, 42, 0, 43, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 106, 0, 0, 166, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 168,
         // State 90
-        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, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        163, 0, 0, 41, 0, 42, 0, 43, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 106, 0, 0, 166, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 168,
         // State 91
-        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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 46, 0, 0, 0, 0,
         // State 92
-        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, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        163, 0, 0, 41, 0, 42, 0, 43, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 106, 0, 0, 166, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 168,
         // State 93
-        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, 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, 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 94
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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 95
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 96
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -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 97
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 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 98
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 99
-        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, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 100
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 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, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 102
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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, -153, 0, -153, -153, 0, 0, 0, 0, 0, 0, 0, -153, 0, -153, 0, 0, -153, -153, 0, 0, 0, 0, 0, 0,
         // State 103
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, 0, -157, -157, 0, 0, 0, 0, 0, 0, 0, -157, 0, -157, 0, 0, -157, 0, 0, 0, 0, 0, -157, 0,
         // State 104
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 105
-        0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 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, 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, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 107
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0,
         // State 108
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 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, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0,
         // State 110
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
         // State 111
-        0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, -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, -104, 0, 0, 0, 0,
         // State 112
-        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 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, -203, 0,
+        0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 113
+        0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 114
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, -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, -106, 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, -147, 0, -147, -147, 0, 0, 0, 0, 0, 0, 0, -147, 0, -147, 0, 0, -147, -147, 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, -39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -39, 0, 0, 0, 0,
+        // State 117
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, -199, 0, 0, 0, -199, 29, 0, -199, 0, -199, 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, -199, 0, 0, -199, 0,
+        // State 118
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 119
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 120
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 137, 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, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 122
+        0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 123
+        0, 0, 0, 0, 0, 0, -83, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 124
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 125
+        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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 126
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        // State 127
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 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,
+        // State 128
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 0,
+        // State 129
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 130
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0,
+        // State 131
+        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, -40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -40, 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, 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,
+        // State 133
+        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, 0, -87, 0,
+        // State 134
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, -200, 0, 0, 0, -200, 44, 0, -200, 0, -200, 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, -200, 0, 0, -200, 0,
+        // State 135
+        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 136
+        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, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 137
+        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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 138
+        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, 0, -208, 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, 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, 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, -85, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 141
+        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, -29, 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, -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 143
+        0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 144
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 145
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0,
+        // State 146
+        0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 147
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -93, 0,
+        // State 148
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, 0, -184, -184, 0, 0, 0, 0, 0, 0, 0, -184, 0, -184, 0, 0, -184, 0, 0, 0, 0, 0, -184, 0,
+        // State 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, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -44, 0,
+        // State 150
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -89, 0,
+        // State 151
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 152
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, 0,
+        // State 153
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 154
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        // State 155
+        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, -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 156
+        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, -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 157
+        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, -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 158
+        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, -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 159
+        0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, -111, -111, 0, 0, -111, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, -111, 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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, -194, 0,
+        // State 161
+        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, -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 162
+        -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, 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
+        -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, 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,
+        // State 164
+        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, -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, -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,
+        // State 166
+        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, -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 167
+        -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, 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 168
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 169
+        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, -30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 170
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, -138, -138, 0, 0, 0, 0, 0, 0, 0, -138, 0, -138, 0, 0, -138, 0, 0, 0, 0, 0, -138, 0,
+        // State 171
+        0, 0, 0, 0, 0, 0, -126, 0, 0, -126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 172
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 173
+        0, 0, 0, 0, 0, 0, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 174
+        0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 175
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -45, 0,
+        // State 176
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, 0,
+        // State 177
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -35, 0,
+        // State 178
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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 179
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, -201, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0,
+        // State 180
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, -103, -103, 0, 0, 0, 0, 0, 0, 0, -103, 0, -103, 0, 0, -103, 0, 0, 0, 0, 0, -103, 0,
+        // State 181
+        -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
+        // State 182
+        -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, 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 183
+        -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, 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 184
+        -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, 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 185
+        -62, 0, 0, -62, 0, -62, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, -62, 0, 0, -62, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, -62,
+        // State 186
+        -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, 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 187
+        -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, 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 188
+        -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, 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 189
+        -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, 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 190
+        -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, 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 191
+        -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, 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 192
+        -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, 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 193
+        -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, 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 194
+        -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, 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 195
+        -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, 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 196
+        -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, 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 197
+        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, -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 198
+        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, -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 199
+        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, -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 200
+        0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        // State 201
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0,
+        // State 202
+        0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 203
+        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, -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 204
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 205
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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 206
+        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, 0, 0, 0, 0, 0, 0,
+        // State 207
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 208
+        0, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 0,
+        // State 209
+        0, 0, 0, 0, 0, 0, 0, -176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -176, -176, -176, 0, 0, -176, 0, 0, 0, 0, -176, 0, 0, 0, -176, 0, 0, 0, -176, 0,
+        // State 210
+        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, 0,
+        // State 211
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 212
+        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, 0,
+        // State 213
+        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, -158, -158, -158, 0, 0, -158, 0, 0, 0, 0, -158, 0, 0, 0, -158, 0, 0, 0, -158, 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, 0, -177, -177, -177, 0, 0, -177, 0, 0, 0, 0, -177, 0, 0, 0, -177, 0, 0, 0, -177, 0,
+        // State 215
+        0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 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, 79, 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,
+        // State 217
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 218
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 246, 0,
+        // State 219
+        0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, -108, 0, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, -108, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0,
+        // State 220
+        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, -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 221
+        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, -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 222
+        0, 0, 0, 0, 0, 0, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 223
+        0, 0, 0, 0, 0, 0, -79, 0, 0, 249, 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,
+        // State 224
+        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, -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 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, 250, 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,
+        // State 226
+        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, -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 227
+        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, -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,
+        // State 228
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 229
+        0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, -109, 0, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, -109, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0,
+        // State 230
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, -202, 0, 0, 0, -202, 0, 0, -202, 0, -202, 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, -202, 0, 0, -202, 0,
+        // State 231
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 232
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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 233
+        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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 234
+        0, 0, 0, 0, 0, 0, 0, -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, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 235
+        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 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, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
+        // State 237
+        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
+        // State 238
+        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, -159, -159, -159, 0, 0, -159, 0, 0, 0, 0, -159, 0, 0, 0, -159, 0, 0, 0, -159, 0,
+        // State 239
+        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, -78, -78, -78, -78, -78, -78, -78, 0, 0, -78, 0, -78, 0, -78, -78, 0, -78, 0, -78, 0, 0, 0, -78, 0,
+        // State 240
+        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
+        // State 241
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 242
+        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, 0, 0, 0, 0,
+        // State 243
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        // 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, 0, -132, 0, -132, -132, 0, 0, 0, 0, 0, 0, 0, -132, 0, -132, 0, 0, -132, 0, 0, 0, 0, 0, -132, 0,
+        // State 245
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        // State 246
+        0, 0, 0, 0, 0, 0, -81, 0, 0, 262, 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,
+        // State 247
+        0, -125, -125, -125, -125, 0, -125, -125, -125, -125, -125, 0, 0, -125, -125, 0, 0, -125, -125, -125, 0, -125, -125, -125, 0, -125, -125, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -125, -125, -125, -125, 0,
+        // State 248
+        -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
+        // State 249
+        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, -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 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, 0, 0, 0, 0, 0, 0, 265, 0,
+        // State 251
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 252
+        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, 0, -95, 0,
+        // State 253
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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 254
+        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, 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,
+        // State 255
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 256
+        0, 0, 0, 0, 0, 0, 0, -145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, -145, -145, -145, 0, 0, -145, 0, 0, 0, 0, -145, 0, 0, 0, -145, 0, 0, 0, -145, 0,
+        // State 257
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 258
+        0, 0, 0, 0, 0, 0, 0, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 0, 0, -220, 0, 0, 0, 0, -220, 0, 0, 0, -220, 0, 0, 0, -220, 0,
+        // State 259
+        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, 0, 0, 0, 0, 0, 0,
+        // State 260
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 261
+        -25, 0, 0, -25, 0, -25, -25, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, -25,
+        // State 262
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        // State 263
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 264
+        0, 0, 0, 0, 0, 0, -188, 0, 0, -188, 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, -188, 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, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
+        // State 266
+        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, 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,
+        // State 267
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 268
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // 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, -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 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0,
+        // State 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, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
+        // State 272
+        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, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
+        // State 273
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
+        // State 274
+        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, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
+        // State 275
+        0, 0, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, -144, -144, 0, 0, -144, 0, 0, 0, 0, -144, 0, 0, 0, -144, 0, 0, 0, -144, 0,
+        // State 276
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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,
+        // State 278
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 279
+        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, -130, -130, -130, 0, 0, -130, 0, 0, 0, 0, -130, 0, 0, 0, -130, 0, 0, 0, -130, 0,
+        // State 280
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        // State 281
+        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, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -615551,9 +652830,9 @@
         // State 0
         0,
         // State 1
-        -170,
+        0,
         // State 2
-        -169,
+        -198,
         // State 3
         0,
         // State 4
@@ -615565,7 +652844,7 @@
         // State 7
         0,
         // State 8
-        0,
+        -197,
         // State 9
         0,
         // State 10
@@ -615611,25 +652890,25 @@
         // State 30
         0,
         // State 31
-        -199,
+        0,
         // State 32
-        -220,
+        0,
         // State 33
-        -256,
+        0,
         // State 34
-        -198,
+        0,
         // State 35
-        -218,
+        0,
         // State 36
-        -139,
+        0,
         // State 37
-        -217,
+        0,
         // State 38
-        -219,
+        0,
         // State 39
-        -173,
+        0,
         // State 40
-        -174,
+        0,
         // State 41
         0,
         // State 42
@@ -615649,13 +652928,13 @@
         // State 49
         0,
         // State 50
-        -171,
+        0,
         // State 51
         0,
         // State 52
         0,
         // State 53
-        -125,
+        0,
         // State 54
         0,
         // State 55
@@ -615703,7 +652982,7 @@
         // State 76
         0,
         // State 77
-        -172,
+        0,
         // State 78
         0,
         // State 79
@@ -615735,19 +653014,19 @@
         // State 92
         0,
         // State 93
-        0,
+        -163,
         // State 94
-        0,
+        -162,
         // State 95
         0,
         // State 96
-        0,
+        -165,
         // State 97
-        0,
+        -156,
         // State 98
-        0,
+        -164,
         // State 99
-        0,
+        -255,
         // State 100
         0,
         // State 101
@@ -615755,7 +653034,7 @@
         // State 102
         0,
         // State 103
-        0,
+        -157,
         // State 104
         0,
         // State 105
@@ -615774,88 +653053,541 @@
         0,
         // State 112
         0,
+        // State 113
+        0,
+        // State 114
+        0,
+        // State 115
+        0,
+        // State 116
+        0,
+        // State 117
+        0,
+        // State 118
+        0,
+        // State 119
+        0,
+        // State 120
+        0,
+        // State 121
+        0,
+        // State 122
+        0,
+        // State 123
+        0,
+        // State 124
+        0,
+        // State 125
+        0,
+        // State 126
+        0,
+        // State 127
+        0,
+        // State 128
+        0,
+        // State 129
+        0,
+        // State 130
+        0,
+        // State 131
+        0,
+        // State 132
+        0,
+        // State 133
+        0,
+        // State 134
+        0,
+        // State 135
+        0,
+        // State 136
+        0,
+        // State 137
+        0,
+        // State 138
+        0,
+        // State 139
+        0,
+        // State 140
+        0,
+        // State 141
+        0,
+        // State 142
+        -161,
+        // State 143
+        0,
+        // State 144
+        0,
+        // State 145
+        0,
+        // State 146
+        0,
+        // State 147
+        0,
+        // State 148
+        -184,
+        // 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
+        -138,
+        // State 171
+        0,
+        // State 172
+        -160,
+        // State 173
+        0,
+        // State 174
+        0,
+        // State 175
+        0,
+        // State 176
+        0,
+        // State 177
+        0,
+        // State 178
+        0,
+        // State 179
+        0,
+        // State 180
+        -103,
+        // 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
+        -134,
+        // 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
+        -136,
+        // 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
+        -137,
+        // State 233
+        0,
+        // State 234
+        0,
+        // State 235
+        0,
+        // State 236
+        0,
+        // State 237
+        0,
+        // State 238
+        0,
+        // State 239
+        -78,
+        // State 240
+        0,
+        // State 241
+        0,
+        // State 242
+        0,
+        // State 243
+        0,
+        // State 244
+        -132,
+        // State 245
+        -183,
+        // State 246
+        0,
+        // State 247
+        0,
+        // State 248
+        0,
+        // State 249
+        0,
+        // State 250
+        0,
+        // State 251
+        0,
+        // State 252
+        0,
+        // State 253
+        -133,
+        // State 254
+        0,
+        // State 255
+        0,
+        // State 256
+        0,
+        // State 257
+        0,
+        // State 258
+        0,
+        // State 259
+        0,
+        // State 260
+        -135,
+        // 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
+        -131,
+        // State 270
+        0,
+        // State 271
+        0,
+        // State 272
+        0,
+        // State 273
+        0,
+        // State 274
+        0,
+        // State 275
+        0,
+        // State 276
+        0,
+        // State 277
+        0,
+        // State 278
+        0,
+        // State 279
+        0,
+        // State 280
+        0,
+        // State 281
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            14 => 6,
-            29 => 27,
-            32 => 28,
-            36 => 15,
-            37 => 16,
-            38 => 17,
-            40 => 41,
-            44 => 94,
+            1 => 61,
+            14 => 71,
+            17 => 21,
+            20 => 27,
+            23 => 11,
+            26 => 26,
+            29 => 81,
+            32 => 25,
+            35 => 206,
+            36 => 49,
+            37 => 50,
+            38 => 51,
+            39 => match state {
+                46 => 217,
+                60 => 232,
+                75 => 256,
+                77 => 258,
+                79 => 260,
+                86 => 274,
+                87 => 275,
+                91 => 279,
+                _ => 170,
+            },
+            40 => 222,
+            41 => match state {
+                20 => 139,
+                24 => 143,
+                33 => 173,
+                _ => 122,
+            },
+            42 => 132,
+            43 => match state {
+                47 => 218,
+                _ => 128,
+            },
+            44 => 250,
             45 => match state {
-                26 => 99,
-                29 => 106,
-                _ => 97,
+                28 => 153,
+                43 => 204,
+                80 => 262,
+                _ => 126,
             },
+            46 => 93,
+            47 => 110,
             48 => match state {
-                3 => 42,
-                5 => 51,
-                6 => 52,
-                30 => 109,
-                _ => 73,
+                64 => 75,
+                67 => 77,
+                83 => 86,
+                89 => 91,
+                29 => 154,
+                53 => 223,
+                55 => 225,
+                66 => 243,
+                71 => 246,
+                74 => 254,
+                82 => 266,
+                85 => 272,
+                90 => 277,
+                92 => 280,
+                _ => 200,
             },
-            49 => 43,
+            49 => 155,
             50 => match state {
-                10 => 71,
-                11 => 72,
-                13 => 76,
-                15 => 84,
-                19 => 85,
-                _ => 44,
+                39 => 198,
+                40 => 199,
+                42 => 203,
+                49 => 220,
+                57 => 226,
+                _ => 156,
             },
             51 => match state {
-                16 => 22,
-                _ => 7,
+                50 => 69,
+                _ => 35,
             },
             52 => match state {
-                17 => 23,
-                _ => 8,
+                51 => 70,
+                _ => 36,
             },
-            53 => 9,
-            55 => 31,
+            53 => 37,
+            55 => match state {
+                45 | 62 => 207,
+                _ => 157,
+            },
+            56 => match state {
+                21 => 140,
+                _ => 123,
+            },
+            58 => 208,
+            59 => 94,
             60 => match state {
-                12 | 30 => 20,
-                4 => 50,
-                14 | 25..=26 | 28..=29 => 79,
-                21 => 89,
-                24 | 27 => 95,
+                29 | 39..=40 | 42 | 45 | 49..=51 | 53 | 55..=57 | 62 | 64 | 66..=67 | 71 | 83 | 89 => 38,
+                41 | 74 | 82 | 85 | 90 | 92 => 58,
+                61 => 73,
+                3 => 104,
+                4 => 106,
+                5 => 107,
+                6 => 109,
+                7 => 111,
+                9 => 112,
+                10 => 113,
+                11 => 114,
+                13 | 20..=21 | 24 | 33 => 124,
+                15 => 125,
+                17 | 26 | 47 => 129,
+                18 => 133,
+                19 => 134,
+                27 => 150,
+                54 => 224,
+                63 => 241,
+                65 => 242,
+                72 | 81 => 251,
+                76 => 257,
+                _ => 117,
+            },
+            62 => 201,
+            63 => 209,
+            64 => match state {
+                1 | 22 => 102,
+                _ => 95,
+            },
+            65 => 210,
+            66 => match state {
+                14 => 22,
                 _ => 1,
             },
-            62 => 74,
-            74 => 32,
-            75 => match state {
-                2 => 40,
-                _ => 39,
+            68 => match state {
+                1 => 8,
+                14 => 23,
+                22 => 32,
+                _ => 2,
             },
-            76 => 2,
-            83 => match state {
-                30 => 110,
-                _ => 75,
+            69 => 62,
+            70 => 96,
+            71 => match state {
+                0..=1 | 14 | 22 => 97,
+                _ => 103,
             },
-            84 => match state {
-                27 => 100,
-                _ => 96,
+            72 => match state {
+                45 | 62 => 211,
+                61 => 233,
+                _ => 158,
             },
-            86 => 45,
-            87 => match state {
-                0 => 33,
-                _ => 46,
+            73 => match state {
+                52 => 221,
+                _ => 197,
             },
-            88 => match state {
-                14 => 80,
-                28 => 103,
-                _ => 98,
+            74 => 52,
+            76 => 212,
+            77 => match state {
+                62 => 238,
+                _ => 213,
             },
-            90 => match state {
-                21 => 90,
-                _ => 81,
+            78 => 98,
+            79 => match state {
+                26 => 147,
+                _ => 130,
             },
-            92 => 21,
-            93 => 10,
-            94 => 34,
+            81 => match state {
+                74 => 255,
+                82 => 267,
+                85 => 273,
+                90 => 278,
+                92 => 281,
+                _ => 202,
+            },
+            82 => match state {
+                81 => 263,
+                _ => 252,
+            },
+            84 => 159,
+            85 => 160,
+            86 => 99,
+            87 => match state {
+                44 => 60,
+                68 => 79,
+                12 => 118,
+                25 => 144,
+                31 => 171,
+                34 => 176,
+                48 => 219,
+                59 => 231,
+                78 => 259,
+                84 => 268,
+                88 => 276,
+                _ => 127,
+            },
+            89 => match state {
+                19 => 135,
+                _ => 119,
+            },
+            91 => 19,
+            92 => 39,
+            93 => 161,
+            94 => 214,
             _ => 0,
         }
     }
@@ -615925,25 +653657,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -615951,7 +653685,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::Expression;
+        type Success = ast::Module;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -615969,7 +653703,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -615993,7 +653727,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -616001,7 +653735,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -616025,22 +653759,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -616101,10 +653837,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -616125,10 +653862,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -617105,25 +654843,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -617135,14 +654873,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -617154,19 +654892,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -617178,109 +654916,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -617292,31 +655030,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -617327,68 +655065,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -617399,26 +655137,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -617430,30 +655168,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -617655,13 +655393,13 @@
                     nonterminal_produced: 128,
                 }
             }
-            254 => {
+            254 => __state_machine::SimulatedReduce::Accept,
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 129,
+                    nonterminal_produced: 130,
                 }
             }
-            255 => __state_machine::SimulatedReduce::Accept,
             256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -617686,52 +655424,50 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct Term0Parser {
+    pub struct TopLevelModuleParser {
         _priv: (),
     }
 
-    impl Default for Term0Parser { fn default() -> Self { Self::new() } }
-    impl Term0Parser {
-        pub(crate) fn new() -> Term0Parser {
-            Term0Parser {
+    impl Default for TopLevelModuleParser { fn default() -> Self { Self::new() } }
+    impl TopLevelModuleParser {
+        pub fn new() -> TopLevelModuleParser {
+            TopLevelModuleParser {
                 _priv: (),
             }
         }
 
         #[allow(dead_code)]
-        pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+        pub fn parse<
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
-        ) -> Result<ast::Expression, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::Module, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -617745,7 +655481,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -617759,802 +655495,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::Expression,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> Option<Result<ast::Module,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            255 => {
-                // __Term0 = Term0 => ActionFn(16);
-                let __sym0 = __pop_Variant14(__symbols);
+                // __TopLevelModule = TopLevelModule => ActionFn(37);
+                let __sym0 = __pop_Variant46(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action16::<>(__sym0);
+                let __nt = super::__action37::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            255 => {
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -618649,16 +656384,6 @@
             _ => __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)>
@@ -618669,13 +656394,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -618759,16 +656484,6 @@
             _ => __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)>
@@ -618789,13 +656504,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -618939,63 +656654,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -619009,13 +656724,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -619029,43 +656744,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -619079,13 +656794,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -619119,13 +656834,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -619179,13 +656894,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -619220,1281 +656935,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -620503,59 +658380,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -620564,59 +658449,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -620625,216 +658518,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -620845,44 +658766,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -620891,180 +658818,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -621074,30 +659023,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -621107,30 +659060,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -621140,62 +659097,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -621203,65 +659168,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -621270,18 +659243,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -621292,18 +659267,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -621317,18 +659294,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -621340,18 +659319,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -621364,18 +659345,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -621386,18 +659369,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -621410,18 +659395,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -621432,18 +659419,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -621455,18 +659444,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -621476,77 +659467,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -621555,18 +659556,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -621575,36 +659578,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -621614,36 +659621,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -621654,18 +659665,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -621675,20 +659688,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -621697,20 +659712,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -621718,30 +659735,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -621750,108 +659771,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -621864,15 +659899,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -621884,154 +659921,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -622040,94 +660044,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -622136,75 +660152,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -622213,15 +660239,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -622230,15 +660258,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -622247,35 +660277,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -622287,18 +660321,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -622307,65 +660343,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -622373,80 +660417,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -622456,95 +660510,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -622552,79 +660654,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -622633,15 +660745,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -622650,15 +660764,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -622667,181 +660783,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -622851,598 +660991,676 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
-    fn __reduce254<
+    fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 129)
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
-pub(crate) use self::__parse__Term0::Term0Parser;
+pub use self::__parse__TopLevelModule::TopLevelModuleParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::needless_lifetimes, clippy::type_complexity, clippy::needless_return, clippy::too_many_arguments, clippy::never_loop, clippy::match_single_binding, clippy::needless_raw_string_hashes)]
@@ -623509,24 +661727,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -623540,27 +661756,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, -100, 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,
         // State 5
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 3, 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,
         // 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, 0,
         // State 7
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 8
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 0, -205, 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, 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, -139, 0, 0, 0, 0, 0, 0, 0, 0, -139, 0, 0, 0, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 11
-        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, 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, 0,
         // State 12
-        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, 0, -213, 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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 13
-        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, 0, -207, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 14
-        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, 0, -208, 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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 15
-        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, 0, -209, 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, 0, -208, 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, 0,
         // State 17
@@ -623568,7 +661784,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, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 19
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 20
         0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 21
@@ -623576,7 +661792,7 @@
         // State 22
         0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 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, -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, 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, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -623593,9 +661809,9 @@
         // State 4
         0,
         // State 5
-        -200,
+        -199,
         // State 6
-        -257,
+        -256,
         // State 7
         0,
         // State 8
@@ -623605,7 +661821,7 @@
         // State 10
         -139,
         // State 11
-        -201,
+        -200,
         // State 12
         0,
         // State 13
@@ -623621,7 +661837,7 @@
         // State 18
         0,
         // State 19
-        -202,
+        -201,
         // State 20
         0,
         // State 21
@@ -623629,7 +661845,7 @@
         // State 22
         0,
         // State 23
-        -203,
+        -202,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
@@ -623642,16 +661858,16 @@
                 1 => 11,
                 _ => 5,
             },
-            88 => match state {
+            87 => match state {
                 0 => 6,
                 3 => 18,
                 _ => 17,
             },
-            90 => match state {
+            89 => match state {
                 1 => 12,
                 _ => 7,
             },
-            92 => 1,
+            91 => 1,
             _ => 0,
         }
     }
@@ -623721,25 +661937,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -623765,7 +661983,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -623789,7 +662007,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -623797,7 +662015,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -623821,22 +662039,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -623897,10 +662117,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -623921,10 +662142,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -624901,25 +663123,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -624931,14 +663153,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -624950,19 +663172,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -624974,109 +663196,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -625088,31 +663310,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -625123,68 +663345,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -625195,26 +663417,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -625226,30 +663448,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -625457,13 +663679,13 @@
                     nonterminal_produced: 129,
                 }
             }
-            255 => {
+            255 => __state_machine::SimulatedReduce::Accept,
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 130,
+                    nonterminal_produced: 131,
                 }
             }
-            256 => __state_machine::SimulatedReduce::Accept,
             257 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -625482,12 +663704,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -625505,10 +663721,12 @@
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::Type, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -625516,18 +663734,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -625541,7 +663761,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -625555,802 +663775,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::Type,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            256 => {
                 // __Type = Type => ActionFn(2);
                 let __sym0 = __pop_Variant6(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action2::<>(__sym0);
+                let __nt = super::__action2::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            256 => {
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -626445,16 +664664,6 @@
             _ => __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)>
@@ -626465,13 +664674,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -626555,16 +664764,6 @@
             _ => __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)>
@@ -626585,13 +664784,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -626735,63 +664934,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -626805,13 +665004,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -626825,43 +665024,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -626875,13 +665074,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -626915,13 +665114,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -626975,13 +665174,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -627016,1281 +665215,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -628299,59 +666660,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -628360,59 +666729,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -628421,216 +666798,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -628641,44 +667046,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -628687,180 +667098,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -628870,30 +667303,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -628903,30 +667340,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -628936,62 +667377,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -628999,65 +667448,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -629066,18 +667523,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -629088,18 +667547,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -629113,18 +667574,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -629136,18 +667599,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -629160,18 +667625,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -629182,18 +667649,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -629206,18 +667675,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -629228,18 +667699,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -629251,18 +667724,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -629272,77 +667747,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -629351,18 +667836,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -629371,36 +667858,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -629410,36 +667901,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -629450,18 +667945,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -629471,20 +667968,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -629493,20 +667992,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -629514,30 +668015,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -629546,108 +668051,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -629660,15 +668179,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -629680,154 +668201,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -629836,94 +668324,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -629932,75 +668432,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -630009,15 +668519,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -630026,15 +668538,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -630043,35 +668557,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -630083,18 +668601,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -630103,65 +668623,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -630169,80 +668697,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -630252,95 +668790,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -630348,79 +668934,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -630429,15 +669025,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -630446,15 +669044,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -630463,181 +669063,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -630647,594 +669271,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
-    fn __reduce255<
+    fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 130)
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(28);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 133)
     }
     fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
-    }
-    fn __reduce260<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -631305,24 +670007,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -631347,21 +670047,21 @@
         // State 0
         0,
         // State 1
-        -258,
+        -257,
         // State 2
-        -206,
+        -205,
         // State 3
         0,
         // State 4
-        -207,
+        -206,
         // State 5
-        -208,
+        -207,
         // State 6
-        -209,
+        -208,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            90 => 1,
+            89 => 1,
             _ => 0,
         }
     }
@@ -631431,25 +670131,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -631475,7 +670177,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -631499,7 +670201,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -631507,7 +670209,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -631531,22 +670233,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -631607,10 +670311,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -631631,10 +670336,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -632611,25 +671317,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -632641,14 +671347,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -632660,19 +671366,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -632684,109 +671390,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -632798,31 +671504,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -632833,68 +671539,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -632905,26 +671611,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -632936,30 +671642,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -633173,13 +671879,13 @@
                     nonterminal_produced: 130,
                 }
             }
-            256 => {
+            256 => __state_machine::SimulatedReduce::Accept,
+            257 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 131,
+                    nonterminal_produced: 132,
                 }
             }
-            257 => __state_machine::SimulatedReduce::Accept,
             258 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
@@ -633192,12 +671898,6 @@
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -633215,10 +671915,12 @@
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::TypeQualifier, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -633226,18 +671928,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -633251,7 +671955,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -633265,802 +671969,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::TypeQualifier,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            257 => {
                 // __TypeQualifier = TypeQualifier => ActionFn(1);
-                let __sym0 = __pop_Variant60(__symbols);
+                let __sym0 = __pop_Variant58(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action1::<>(__sym0);
+                let __nt = super::__action1::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
+            257 => {
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
+            }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -634155,16 +672858,6 @@
             _ => __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)>
@@ -634175,13 +672868,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -634265,16 +672958,6 @@
             _ => __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)>
@@ -634295,13 +672978,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -634445,63 +673128,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -634515,13 +673198,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -634535,43 +673218,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -634585,13 +673268,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -634625,13 +673308,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -634685,13 +673368,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -634726,1281 +673409,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -636009,59 +674854,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -636070,59 +674923,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -636131,216 +674992,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -636351,44 +675240,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -636397,180 +675292,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -636580,30 +675497,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -636613,30 +675534,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -636646,62 +675571,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -636709,65 +675642,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -636776,18 +675717,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -636798,18 +675741,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -636823,18 +675768,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -636846,18 +675793,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -636870,18 +675819,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -636892,18 +675843,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -636916,18 +675869,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -636938,18 +675893,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -636961,18 +675918,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -636982,77 +675941,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -637061,18 +676030,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -637081,36 +676052,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -637120,36 +676095,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -637160,18 +676139,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -637181,20 +676162,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -637203,20 +676186,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -637224,30 +676209,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -637256,108 +676245,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -637370,15 +676373,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -637390,154 +676395,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -637546,94 +676518,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -637642,75 +676626,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -637719,15 +676713,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -637736,15 +676732,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -637753,35 +676751,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -637793,18 +676795,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -637813,65 +676817,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -637879,80 +676891,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -637962,95 +676984,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -638058,79 +677128,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -638139,15 +677219,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -638156,15 +677238,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -638173,181 +677257,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -638357,594 +677465,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 130)
-    }
-    fn __reduce256<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Type = Type => ActionFn(2);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action2::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 131)
+        (1, 130)
     }
-    fn __reduce258<
+    fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 133)
+        let __nt = super::__action27::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 132)
     }
-    fn __reduce259<
+    fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 133)
     }
-    fn __reduce260<
+    fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -639015,24 +678201,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -639053,17 +678237,17 @@
         // State 0
         0,
         // State 1
-        -259,
+        -258,
         // State 2
-        -215,
-        // State 3
         -214,
+        // State 3
+        -213,
         // State 4
-        -216,
+        -215,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            93 => 1,
+            92 => 1,
             _ => 0,
         }
     }
@@ -639133,25 +678317,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -639177,7 +678363,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -639201,7 +678387,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -639209,7 +678395,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -639233,22 +678419,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -639309,10 +678497,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -639333,10 +678522,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -640313,25 +679503,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -640343,14 +679533,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -640362,19 +679552,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -640386,109 +679576,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -640500,31 +679690,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -640535,68 +679725,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -640607,26 +679797,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -640638,30 +679828,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -640881,25 +680071,19 @@
                     nonterminal_produced: 131,
                 }
             }
-            257 => {
+            257 => __state_machine::SimulatedReduce::Accept,
+            258 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 132,
+                    nonterminal_produced: 133,
                 }
             }
-            258 => __state_machine::SimulatedReduce::Accept,
             259 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 134,
                 }
             }
-            260 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 135,
-                }
-            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -640917,10 +680101,12 @@
 
         #[allow(dead_code)]
         pub fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::UnaryOp, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -640928,18 +680114,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -640953,7 +680141,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -640967,802 +680155,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::UnaryOp,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            258 => {
                 // __UnaryOp = UnaryOp => ActionFn(27);
-                let __sym0 = __pop_Variant62(__symbols);
+                let __sym0 = __pop_Variant60(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action27::<>(__sym0);
+                let __nt = super::__action27::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
-            259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            258 => {
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            259 => {
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -641857,16 +681044,6 @@
             _ => __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)>
@@ -641877,13 +681054,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -641967,16 +681144,6 @@
             _ => __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)>
@@ -641997,13 +681164,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -642147,63 +681314,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -642217,13 +681384,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -642237,43 +681404,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -642287,13 +681454,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -642327,13 +681494,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -642387,13 +681554,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -642428,1281 +681595,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -643711,59 +683040,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -643772,59 +683109,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -643833,216 +683178,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -644053,44 +683426,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -644099,180 +683478,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -644282,30 +683683,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -644315,30 +683720,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -644348,62 +683757,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -644411,65 +683828,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -644478,18 +683903,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -644500,18 +683927,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -644525,18 +683954,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -644548,18 +683979,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -644572,18 +684005,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -644594,18 +684029,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -644618,18 +684055,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -644640,18 +684079,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -644663,18 +684104,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -644684,77 +684127,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -644763,18 +684216,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -644783,36 +684238,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -644822,36 +684281,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -644862,18 +684325,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -644883,20 +684348,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -644905,20 +684372,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -644926,30 +684395,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -644958,108 +684431,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -645072,15 +684559,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -645092,154 +684581,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -645248,94 +684704,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -645344,75 +684812,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -645421,15 +684899,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -645438,15 +684918,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -645455,35 +684937,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -645495,18 +684981,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -645515,65 +685003,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -645581,80 +685077,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -645664,95 +685170,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -645760,79 +685314,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -645841,15 +685405,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -645858,15 +685424,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -645875,181 +685443,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -646059,594 +685651,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 130)
-    }
-    fn __reduce256<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Type = Type => ActionFn(2);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action2::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 131)
+        (1, 130)
     }
-    fn __reduce257<
+    fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 132)
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 131)
     }
-    fn __reduce259<
+    fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 133)
     }
-    fn __reduce260<
+    fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (1, 135)
+        let __nt = super::__action13::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -646717,24 +686387,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -646742,7 +686410,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, 0,
         // State 2
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 4, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 5, -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, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 4, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 5, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 3
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 4
@@ -646754,7 +686422,7 @@
         // State 7
         0, 0, 0, 64, 0, 0, -110, 0, 65, -110, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 67, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, -110, 0,
         // State 8
-        0, -170, -170, -170, -170, 18, -170, -170, -170, -170, -170, 0, 4, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, 5, -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, -167, -167, -167, -167, 18, -167, -167, -167, -167, -167, 0, 4, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, 5, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 9
         49, 0, 0, 11, 0, 19, 0, 13, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 36, 0, 0, 37, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 10
@@ -646778,7 +686446,7 @@
         // State 19
         49, 0, 0, 11, 0, 19, 0, 13, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 36, 0, 0, 37, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 20
-        0, -170, -170, -170, -170, 18, -170, -170, -170, -170, -170, 0, 4, 0, -170, 0, 85, 0, -170, -170, 0, -170, -170, -170, 5, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        0, -167, -167, -167, -167, 18, -167, -167, -167, -167, -167, 0, 4, 0, -167, 0, 85, 0, -167, -167, 0, -167, -167, -167, 5, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 21
         0, 0, 0, 78, 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, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 22
@@ -646802,23 +686470,23 @@
         // State 31
         49, 0, 0, 11, 0, 12, 0, 13, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 36, 0, 0, 37, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 32
-        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, -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,
+        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, -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 33
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 34
-        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, -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,
+        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, -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 35
         0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, 0, -139, -139, -139, 0, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 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, -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, -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, -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,
         // State 37
-        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, -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,
+        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, -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 38
-        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, -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,
+        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, -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, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, 0, -174, 0, 0, 0, -174, -174, 0, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, 0,
-        // State 40
         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, -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 40
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, -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 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, 52, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 42
@@ -646826,21 +686494,21 @@
         // State 43
         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, -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 44
-        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, -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,
+        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, -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, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, 0, -111, 0, 0, 0, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, 0,
         // State 46
-        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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, -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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
         // State 47
-        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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        0, -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, -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 48
-        -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, 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
         -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, 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 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, 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,
         // State 50
-        -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, 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,
+        -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, 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 51
-        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, -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,
+        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, -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 52
         -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
         // State 53
@@ -646886,13 +686554,13 @@
         // State 73
         0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 74
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, -200, 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, -200, 0,
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, -199, 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, -199, 0,
         // State 75
         0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 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, -108, 0,
         // State 76
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 77
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 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, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 79
@@ -646904,21 +686572,21 @@
         // State 82
         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, -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 83
-        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, -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, -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, -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,
         // State 84
         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, 0,
         // State 85
         0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 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, -109, 0,
         // State 86
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -200, 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, -200, 0,
         // State 87
-        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, 0, -213, 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, 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, -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, 0, -207, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 89
-        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, 0, -208, 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, 0, -207, 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, 0, -209, 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, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 91
         0, 0, 0, 0, 0, 0, -81, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 92
@@ -646942,13 +686610,13 @@
         // State 101
         0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 102
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, -188, 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, -188, 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, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
         // State 104
         0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 105
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
         // State 106
         0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 107
@@ -646958,13 +686626,13 @@
         // State 109
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
         // State 110
-        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, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
         // State 111
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
         // State 112
         0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 113
-        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 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, -203, 0,
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 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, -202, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 53 + integer]
@@ -646973,9 +686641,9 @@
         // State 0
         0,
         // State 1
-        -170,
+        -167,
         // State 2
-        -169,
+        -166,
         // State 3
         0,
         // State 4
@@ -647035,23 +686703,23 @@
         // State 31
         0,
         // State 32
-        -220,
+        -219,
         // State 33
-        -260,
+        -259,
         // State 34
-        -218,
+        -217,
         // State 35
         -139,
         // State 36
-        -217,
+        -216,
         // State 37
-        -219,
+        -218,
         // State 38
-        -173,
+        -170,
         // State 39
-        -174,
-        // State 40
         -171,
+        // State 40
+        -168,
         // State 41
         0,
         // State 42
@@ -647073,7 +686741,7 @@
         // State 50
         0,
         // State 51
-        -172,
+        -169,
         // State 52
         0,
         // State 53
@@ -647250,34 +686918,34 @@
                 _ => 8,
             },
             62 => 71,
-            74 => 32,
-            75 => match state {
+            72 => 32,
+            73 => match state {
                 2 => 39,
                 _ => 38,
             },
-            76 => 2,
-            83 => match state {
+            74 => 2,
+            81 => match state {
                 31 => 111,
                 _ => 72,
             },
-            84 => match state {
+            82 => match state {
                 28 => 101,
                 _ => 96,
             },
-            86 => 45,
-            87 => 46,
-            88 => match state {
+            84 => 45,
+            85 => 46,
+            87 => match state {
                 13 => 75,
                 29 => 104,
                 _ => 98,
             },
-            90 => match state {
+            89 => match state {
                 21 => 87,
                 _ => 76,
             },
-            92 => 21,
-            93 => 9,
-            94 => match state {
+            91 => 21,
+            92 => 9,
+            93 => match state {
                 0 => 33,
                 _ => 47,
             },
@@ -647350,25 +687018,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -647394,7 +687064,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -647418,7 +687088,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -647426,7 +687096,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -647450,22 +687120,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -647526,10 +687198,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -647550,10 +687223,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -648530,25 +688204,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -648560,14 +688234,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -648579,19 +688253,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -648603,109 +688277,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -648717,31 +688391,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -648752,68 +688426,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -648824,26 +688498,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -648855,30 +688529,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -649104,17 +688778,11 @@
                     nonterminal_produced: 132,
                 }
             }
-            258 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 133,
-                }
-            }
-            259 => __state_machine::SimulatedReduce::Accept,
-            260 => {
+            258 => __state_machine::SimulatedReduce::Accept,
+            259 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 135,
+                    nonterminal_produced: 134,
                 }
             }
             _ => panic!("invalid reduction index {}", __reduce_index)
@@ -649134,10 +688802,12 @@
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::ValueExpr, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -649145,18 +688815,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -649170,7 +688842,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -649184,802 +688856,801 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::ValueExpr,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            259 => {
                 // __ValueExpr = ValueExpr => ActionFn(28);
-                let __sym0 = __pop_Variant63(__symbols);
+                let __sym0 = __pop_Variant61(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action28::<>(__sym0);
+                let __nt = super::__action28::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
-            260 => {
-                __reduce260(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            259 => {
+                __reduce259(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -650074,16 +689745,6 @@
             _ => __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)>
@@ -650094,13 +689755,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -650184,16 +689845,6 @@
             _ => __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)>
@@ -650214,13 +689865,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -650364,63 +690015,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -650434,13 +690085,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -650454,43 +690105,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -650504,13 +690155,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -650544,13 +690195,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -650604,13 +690255,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -650645,1281 +690296,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -651928,59 +691741,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -651989,59 +691810,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -652050,216 +691879,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -652270,44 +692127,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -652316,180 +692179,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -652499,30 +692384,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -652532,30 +692421,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -652565,62 +692458,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -652628,65 +692529,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -652695,18 +692604,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -652717,18 +692628,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -652742,18 +692655,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -652765,18 +692680,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -652789,18 +692706,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -652811,18 +692730,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -652835,18 +692756,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -652857,18 +692780,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -652880,18 +692805,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -652901,77 +692828,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -652980,18 +692917,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -653000,36 +692939,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -653039,36 +692982,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -653079,18 +693026,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -653100,20 +693049,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -653122,20 +693073,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -653143,30 +693096,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -653175,108 +693132,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -653289,15 +693260,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -653309,154 +693282,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -653465,94 +693405,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -653561,75 +693513,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -653638,15 +693600,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -653655,15 +693619,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -653672,35 +693638,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -653712,18 +693682,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -653732,65 +693704,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -653798,80 +693778,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -653881,95 +693871,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -653977,79 +694015,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -654058,15 +694106,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -654075,15 +694125,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -654092,181 +694144,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -654276,594 +694352,672 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
-    fn __reduce258<
+    fn __reduce259<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(27);
+        // __WhileStmt = WhileStmt => ActionFn(13);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action13::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 133)
-    }
-    fn __reduce260<
-    >(
-        __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, 135)
+        (1, 134)
     }
 }
 #[allow(unused_imports)]
@@ -654934,24 +695088,22 @@
         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),
+        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),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -654967,7 +695119,7 @@
         // State 5
         0, 0, 0, 82, 0, 0, -110, 0, 83, -110, 84, 0, 0, -110, 0, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, 85, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 86, 0, -110, 0,
         // State 6
-        0, -170, -170, -170, -170, 18, -170, -170, -170, -170, -170, 0, 19, -170, -170, 0, 0, -170, -170, -170, -170, -170, -170, -170, 20, -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, -167, -167, -167, -167, 18, -167, -167, -167, -167, -167, 0, 19, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, 20, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
         // State 7
         63, 0, 0, 9, 0, 21, 0, 11, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 66, 0, 0, 67, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 69,
         // State 8
@@ -654987,7 +695139,7 @@
         // State 15
         63, 0, 0, 9, 0, 21, 0, 11, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 66, 0, 0, 67, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 69,
         // State 16
-        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, 19, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, 20, -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, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, 19, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, 20, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
         // State 17
         63, 0, 0, 9, 0, 10, -80, 11, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 66, 0, 0, 67, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 69,
         // State 18
@@ -654999,7 +695151,7 @@
         // State 21
         63, 0, 0, 9, 0, 21, 0, 11, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 66, 0, 0, 67, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 69,
         // State 22
-        0, -170, -170, -170, -170, 18, -170, -170, -170, -170, -170, 0, 19, 0, -170, 0, 117, -170, -170, -170, 0, -170, -170, -170, 20, 0, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -170, -170, -170, 0,
+        0, -167, -167, -167, -167, 18, -167, -167, -167, -167, -167, 0, 19, 0, -167, 0, 117, -167, -167, -167, 0, -167, -167, -167, 20, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, -167, -167, -167, 0,
         // State 23
         0, 0, 0, 97, 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, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 24
@@ -655013,7 +695165,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, 0, 66, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 29
-        63, 0, 0, 9, 0, 10, 0, 11, 0, 0, 64, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 66, 0, 0, 67, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 69,
+        63, 0, 0, 9, 0, 10, 0, 11, 0, 0, 64, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 66, 0, 0, 67, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 69,
         // State 30
         0, 71, -119, -119, 72, 0, -119, -119, -119, -119, -119, 0, 0, -119, -119, 0, 0, -119, 73, 74, 0, 75, 76, 77, 0, -119, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, 78, -119, 0,
         // State 31
@@ -655025,7 +695177,7 @@
         // State 34
         0, 0, 0, 97, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 35
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, -170, 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, 19, 0, 0, 0, 0, 0, 0, 0, -167, 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,
         // State 36
         63, 0, 0, 9, 0, 10, 0, 11, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 66, 0, 0, 67, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 69,
         // State 37
@@ -655069,31 +695221,31 @@
         // State 56
         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, -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 57
-        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, -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,
+        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, -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 58
-        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, -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,
+        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, -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 59
         0, -111, -111, -111, -111, 0, -111, -111, -111, -111, -111, 0, 0, -111, -111, 0, 0, -111, -111, -111, 0, -111, -111, -111, 0, -111, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, -111, 0,
         // State 60
-        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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, -197, 0,
+        0, -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, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, -194, 0,
         // State 61
-        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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, -198, 0,
+        0, -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, -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 62
-        -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, 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 63
         -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, 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 63
+        -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, 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,
         // State 64
-        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, -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,
+        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, -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 65
         0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, -139, 0,
         // State 66
-        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, -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, -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, -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,
         // State 67
-        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, -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,
+        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, -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 68
-        -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, 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,
+        -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, 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 69
-        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, 0, -221, -221, -221, 0, 0, -221, 0, 0, 0, 0, -221, 0, 0, 0, -221, 0, 0, 0, -221, 0,
+        0, 0, 0, 0, 0, 0, 0, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 0, 0, -220, 0, 0, 0, 0, -220, 0, 0, 0, -220, 0, 0, 0, -220, 0,
         // State 70
         -63, 0, 0, -63, 0, -63, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, -63, 0, 0, -63, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, -63,
         // State 71
@@ -655127,7 +695279,7 @@
         // State 85
         -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, 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 86
-        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, -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,
+        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, -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 87
         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, -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 88
@@ -655141,13 +695293,13 @@
         // State 92
         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, -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 93
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, -200, 0, 0, 0, -200, 35, 0, -200, 0, -200, 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, -200, 0, 0, -200, 0,
+        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, -199, 0, 0, 0, -199, 35, 0, -199, 0, -199, 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, -199, 0, 0, -199, 0,
         // State 94
         0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0, 0, 0, -108, 0, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, -108, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 0, 0, -108, 0,
         // State 95
-        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, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -211, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 96
-        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, 0, -206, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 0, -205, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 97
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 98
@@ -655155,9 +695307,9 @@
         // State 99
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 100
-        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 0,
         // State 101
-        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -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, -176, -176, -176, 0, 0, -176, 0, 0, 0, 0, -176, 0, 0, 0, -176, 0, 0, 0, -176, 0,
         // State 102
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 103
@@ -655167,61 +695319,61 @@
         // State 105
         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, -158, -158, -158, 0, 0, -158, 0, 0, 0, 0, -158, 0, 0, 0, -158, 0, 0, 0, -158, 0,
         // State 106
-        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -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, -177, -177, -177, 0, 0, -177, 0, 0, 0, 0, -177, 0, 0, 0, -177, 0, 0, 0, -177, 0,
         // State 107
         0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 108
         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, -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 109
-        0, -174, -174, -174, -174, 0, -174, -174, -174, -174, -174, 0, -174, -174, -174, 0, 0, -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, -174, -174, -174, 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, -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 110
         0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 111
         0, 0, 0, 0, 0, 0, -79, 0, 0, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 112
-        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, -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,
+        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, -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 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, 138, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 114
         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, -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 115
-        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, -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, -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, -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,
         // State 116
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 117
         0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0, 0, 0, -109, 0, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, -109, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, -109, 0,
         // State 118
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, -201, 0, 0, 0, -201, 43, 0, -201, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0,
+        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, -200, 0, 0, 0, -200, 43, 0, -200, 0, -200, 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, -200, 0, 0, -200, 0,
         // State 119
-        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, 0, -213, 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, 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, -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, 0, -207, 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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 121
-        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, 0, -208, 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, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 122
-        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, 0, -209, 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, 0, -208, 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, 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,
         // State 124
         0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 125
-        0, 0, 0, 0, 0, 0, 0, -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, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
+        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
         // State 126
-        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, -184, -184, -184, 0, 0, -184, 0, 0, 0, 0, -184, 0, 0, 0, -184, 0, 0, 0, -184, 0,
+        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
         // State 127
-        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
+        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
         // State 128
         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, -159, -159, -159, 0, 0, -159, 0, 0, 0, 0, -159, 0, 0, 0, -159, 0, 0, 0, -159, 0,
         // State 129
         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, -78, 0, 0, -78, -78, -78, 0, 0, -78, 0, 0, 0, 0, -78, 0, 0, 0, -78, 0, 0, 0, -78, 0,
         // State 130
-        0, 0, 0, 0, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, -185, -185, 0, 0, -185, 0, 0, 0, 0, -185, 0, 0, 0, -185, 0, 0, 0, -185, 0,
+        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 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, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 132
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
         // State 133
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 134
         0, 0, 0, 0, 0, 0, -81, 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 135
@@ -655229,7 +695381,7 @@
         // State 136
         -24, 0, 0, -24, 0, -24, -24, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -24,
         // State 137
-        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, -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,
+        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, -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 138
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 0,
         // State 139
@@ -655255,13 +695407,13 @@
         // State 149
         0, 0, 0, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 150
-        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, -188, 0, 0, -188, 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, -188, 0,
         // State 151
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0,
         // State 152
         0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 153
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, -202, 0, 0, 0, -202, 0, 0, -202, 0, -202, 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, -202, 0, 0, -202, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, -201, 0, 0, 0, -201, 0, 0, -201, 0, -201, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0,
         // State 154
         0, 0, 0, -54, 0, 0, 0, -54, 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, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 155
@@ -655277,13 +695429,13 @@
         // State 160
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0,
         // State 161
-        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, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
         // State 162
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0,
         // State 163
         0, 0, 0, -55, 0, 0, 0, -55, 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, -55, 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, -203, 0, 0, -203, 0, 0, 0, -203, 0, 0, 0, -203, 0, 0, -203, 0, -203, 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, -203, 0, 0, -203, 0,
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, -202, 0, 0, 0, -202, 0, 0, -202, 0, -202, 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, -202, 0, 0, -202, 0,
         // State 165
         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, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
         // State 166
@@ -655414,7 +695566,7 @@
         // State 53
         0,
         // State 54
-        -261,
+        -260,
         // State 55
         0,
         // State 56
@@ -655444,7 +695596,7 @@
         // State 68
         0,
         // State 69
-        -221,
+        -220,
         // State 70
         0,
         // State 71
@@ -655731,22 +695883,22 @@
             63 => 101,
             65 => 102,
             69 => 25,
-            74 => match state {
+            72 => match state {
                 12 | 25 => 103,
                 24 => 123,
                 _ => 58,
             },
-            75 => match state {
+            73 => match state {
                 16 => 109,
                 _ => 86,
             },
-            76 => 16,
-            78 => 104,
-            79 => match state {
+            74 => 16,
+            76 => 104,
+            77 => match state {
                 25 => 128,
                 _ => 105,
             },
-            83 => match state {
+            81 => match state {
                 36 => 144,
                 43 => 157,
                 46 => 162,
@@ -655754,27 +695906,27 @@
                 53 => 172,
                 _ => 91,
             },
-            84 => match state {
+            82 => match state {
                 40 => 149,
                 _ => 140,
             },
-            86 => 59,
-            87 => 60,
-            88 => match state {
+            84 => 59,
+            85 => 60,
+            87 => match state {
                 11 => 94,
                 41 => 152,
                 45 => 158,
                 49 => 167,
                 _ => 142,
             },
-            90 => match state {
+            89 => match state {
                 23 => 119,
                 _ => 95,
             },
-            92 => 23,
-            93 => 7,
-            94 => 61,
-            95 => match state {
+            91 => 23,
+            92 => 7,
+            93 => 61,
+            94 => match state {
                 0 => 54,
                 _ => 106,
             },
@@ -655847,25 +695999,27 @@
         }).collect()
     }
     fn __expected_tokens_from_states<
+        'module_name,
     >(
         __states: &[i16],
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> alloc::vec::Vec<alloc::string::String>
     {
         __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
-            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&())>) {
                 Some(alloc::string::ToString::to_string(terminal))
             } else {
                 None
             }
         }).collect()
     }
-    struct __StateMachine<>
+    struct __StateMachine<'module_name>
     where 
     {
-        __phantom: core::marker::PhantomData<()>,
+        module_name: &'module_name str,
+        __phantom: core::marker::PhantomData<(&'module_name ())>,
     }
-    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    impl<'module_name> __state_machine::ParserDefinition for __StateMachine<'module_name>
     where 
     {
         type Location = usize;
@@ -655891,7 +696045,7 @@
 
         #[inline]
         fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
-            __token_to_integer(token, core::marker::PhantomData::<()>)
+            __token_to_integer(token, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -655915,7 +696069,7 @@
         }
 
         fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
-            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
         }
 
         fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
@@ -655923,7 +696077,7 @@
         }
 
         fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
-            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+            __expected_tokens_from_states(states, core::marker::PhantomData::<(&())>)
         }
 
         #[inline]
@@ -655947,22 +696101,24 @@
             symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
         ) -> Option<__state_machine::ParseResult<Self>> {
             __reduce(
+                self.module_name,
                 action,
                 start_location,
                 states,
                 symbols,
-                core::marker::PhantomData::<()>,
+                core::marker::PhantomData::<(&())>,
             )
         }
 
         fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
-            __simulate_reduce(action, core::marker::PhantomData::<()>)
+            __simulate_reduce(action, core::marker::PhantomData::<(&())>)
         }
     }
     fn __token_to_integer<
+        'module_name,
     >(
         __token: &Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<usize>
     {
         match *__token {
@@ -656023,10 +696179,11 @@
         }
     }
     fn __token_to_symbol<
+        'module_name,
     >(
         __token_index: usize,
         __token: Token,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> __Symbol<>
     {
         #[allow(clippy::manual_range_patterns)]match __token_index {
@@ -656047,10 +696204,11 @@
         }
     }
     fn __simulate_reduce<
+        'module_name,
     >(
         __reduce_index: i16,
-        _: core::marker::PhantomData<()>,
-    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<'module_name>>
     {
         match __reduce_index {
             0 => {
@@ -657027,25 +697185,25 @@
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 72,
+                    nonterminal_produced: 71,
                 }
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 72,
                 }
             }
@@ -657057,14 +697215,14 @@
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             168 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
                 }
             }
             169 => {
@@ -657076,19 +697234,19 @@
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 75,
+                    nonterminal_produced: 74,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 75,
                 }
             }
             172 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
                 }
             }
             173 => {
@@ -657100,109 +697258,109 @@
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 76,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 77,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 79,
+                    states_to_pop: 2,
+                    nonterminal_produced: 77,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    nonterminal_produced: 77,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 8,
+                    nonterminal_produced: 78,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 79,
+                    states_to_pop: 5,
+                    nonterminal_produced: 78,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 1,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 0,
                     nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 84,
+                    states_to_pop: 0,
+                    nonterminal_produced: 83,
                 }
             }
             192 => {
@@ -657214,31 +697372,31 @@
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    nonterminal_produced: 84,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 86,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    nonterminal_produced: 86,
                 }
             }
             198 => {
@@ -657249,68 +697407,68 @@
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 88,
+                    states_to_pop: 2,
+                    nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 4,
+                    nonterminal_produced: 87,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 88,
+                    states_to_pop: 5,
+                    nonterminal_produced: 87,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    states_to_pop: 0,
+                    nonterminal_produced: 88,
                 }
             }
             204 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 1,
                     nonterminal_produced: 89,
                 }
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    states_to_pop: 2,
+                    nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             207 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 89,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 91,
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
                 }
             }
             210 => {
@@ -657321,26 +697479,26 @@
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    states_to_pop: 2,
+                    nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 92,
                 }
             }
             215 => {
@@ -657352,30 +697510,30 @@
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
@@ -657607,13 +697765,7 @@
                     nonterminal_produced: 133,
                 }
             }
-            259 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 134,
-                }
-            }
-            260 => __state_machine::SimulatedReduce::Accept,
+            259 => __state_machine::SimulatedReduce::Accept,
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -657631,10 +697783,12 @@
 
         #[allow(dead_code)]
         pub(crate) fn parse<
-            __TOKEN: __ToTriple<>,
+            'module_name,
+            __TOKEN: __ToTriple<'module_name, >,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
+            module_name: &'module_name str,
             __tokens0: __TOKENS,
         ) -> Result<ast::WhileStmt, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
@@ -657642,18 +697796,20 @@
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
             __state_machine::Parser::drive(
                 __StateMachine {
-                    __phantom: core::marker::PhantomData::<()>,
+                    module_name,
+                    __phantom: core::marker::PhantomData::<(&())>,
                 },
                 __tokens,
             )
         }
     }
     fn __accepts<
+        'module_name,
     >(
         __error_state: Option<i16>,
         __states: &[i16],
         __opt_integer: Option<usize>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> bool
     {
         let mut __states = __states.to_vec();
@@ -657667,7 +697823,7 @@
             };
             if __action == 0 { return false; }
             if __action > 0 { return true; }
-            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+            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),
@@ -657681,801 +697837,800 @@
         }
     }
     fn __reduce<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __action: i16,
         __lookahead_start: Option<&usize>,
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> Option<Result<ast::WhileStmt,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
-                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce0(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             1 => {
-                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce1(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             2 => {
-                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce2(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             3 => {
-                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce3(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             4 => {
-                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce4(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             5 => {
-                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce5(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             6 => {
-                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce6(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             7 => {
-                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce7(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             8 => {
-                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce8(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             9 => {
-                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce9(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             10 => {
-                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce10(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             11 => {
-                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce11(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             12 => {
-                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce12(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             13 => {
-                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce13(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             14 => {
-                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce14(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             15 => {
-                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce15(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             16 => {
-                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce16(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             17 => {
-                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce17(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             18 => {
-                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce18(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             19 => {
-                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce19(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             20 => {
-                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce20(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             21 => {
-                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce21(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             22 => {
-                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce22(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             23 => {
-                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce23(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             24 => {
-                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce24(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             25 => {
-                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce25(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             26 => {
-                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce26(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             27 => {
-                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce27(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             28 => {
-                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce28(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             29 => {
-                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce29(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             30 => {
-                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce30(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             31 => {
-                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce31(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             32 => {
-                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce32(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             33 => {
-                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce33(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             34 => {
-                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce34(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             35 => {
-                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce35(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             36 => {
-                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce36(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             37 => {
-                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce37(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             38 => {
-                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce38(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             39 => {
-                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce39(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             40 => {
-                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce40(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             41 => {
-                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce41(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             42 => {
-                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce42(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             43 => {
-                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce43(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             44 => {
-                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce44(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             45 => {
-                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce45(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             46 => {
-                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce46(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             47 => {
-                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce47(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             48 => {
-                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce48(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             49 => {
-                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce49(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             50 => {
-                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce50(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             51 => {
-                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce51(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             52 => {
-                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce52(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             53 => {
-                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce53(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             54 => {
-                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce54(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             55 => {
-                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce55(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             56 => {
-                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce56(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             57 => {
-                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce57(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             58 => {
-                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce58(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             59 => {
-                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce59(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             60 => {
-                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce60(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             61 => {
-                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce61(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             62 => {
-                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce62(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             63 => {
-                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce63(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             64 => {
-                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce64(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             65 => {
-                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce65(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             66 => {
-                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce66(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             67 => {
-                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce67(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             68 => {
-                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce68(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             69 => {
-                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce69(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             70 => {
-                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce70(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             71 => {
-                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce71(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             72 => {
-                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce72(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             73 => {
-                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce73(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             74 => {
-                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce74(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             75 => {
-                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce75(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             76 => {
-                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce76(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             77 => {
-                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce77(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             78 => {
-                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce78(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             79 => {
-                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce79(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             80 => {
-                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce80(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             81 => {
-                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce81(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             82 => {
-                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce82(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             83 => {
-                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce83(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             84 => {
-                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce84(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             85 => {
-                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce85(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             86 => {
-                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce86(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             87 => {
-                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce87(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             88 => {
-                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce88(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             89 => {
-                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce89(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             90 => {
-                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce90(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             91 => {
-                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce91(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             92 => {
-                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce92(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             93 => {
-                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce93(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             94 => {
-                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce94(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             95 => {
-                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce95(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             96 => {
-                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce96(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             97 => {
-                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce97(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             98 => {
-                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce98(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             99 => {
-                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce99(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             100 => {
-                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce100(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             101 => {
-                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce101(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             102 => {
-                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce102(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             103 => {
-                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce103(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             104 => {
-                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce104(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             105 => {
-                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce105(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             106 => {
-                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce106(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             107 => {
-                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce107(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             108 => {
-                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce108(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             109 => {
-                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce109(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             110 => {
-                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce110(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             111 => {
-                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce111(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             112 => {
-                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce112(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             113 => {
-                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce113(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             114 => {
-                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce114(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             115 => {
-                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce115(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             116 => {
-                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce116(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             117 => {
-                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce117(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             118 => {
-                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce118(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             119 => {
-                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce119(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             120 => {
-                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce120(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             121 => {
-                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce121(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             122 => {
-                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce122(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             123 => {
-                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce123(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             124 => {
-                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce124(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             125 => {
-                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce125(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             126 => {
-                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce126(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             127 => {
-                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce127(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             128 => {
-                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce128(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             129 => {
-                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce129(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             130 => {
-                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce130(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             131 => {
-                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce131(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             132 => {
-                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce132(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             133 => {
-                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce133(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             134 => {
-                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce134(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             135 => {
-                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce135(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             136 => {
-                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce136(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             137 => {
-                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce137(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             138 => {
-                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce138(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             139 => {
-                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce139(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             140 => {
-                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce140(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             141 => {
-                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce141(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             142 => {
-                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce142(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             143 => {
-                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce143(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             144 => {
-                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce144(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             145 => {
-                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce145(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             146 => {
-                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce146(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             147 => {
-                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce147(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             148 => {
-                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce148(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             149 => {
-                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce149(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             150 => {
-                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce150(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             151 => {
-                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce151(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             152 => {
-                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce152(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             153 => {
-                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce153(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             154 => {
-                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce154(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             155 => {
-                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce155(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             156 => {
-                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce156(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             157 => {
-                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce157(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             158 => {
-                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce158(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             159 => {
-                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce159(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             160 => {
-                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce160(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             161 => {
-                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce161(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             162 => {
-                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce162(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             163 => {
-                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce163(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             164 => {
-                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce164(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             165 => {
-                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce165(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             166 => {
-                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce166(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             167 => {
-                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce167(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             168 => {
-                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce168(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             169 => {
-                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce169(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             170 => {
-                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce170(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             171 => {
-                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce171(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             172 => {
-                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce172(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             173 => {
-                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce173(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             174 => {
-                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce174(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             175 => {
-                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce175(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             176 => {
-                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce176(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             177 => {
-                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce177(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             178 => {
-                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce178(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             179 => {
-                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce179(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             180 => {
-                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce180(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             181 => {
-                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce181(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             182 => {
-                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce182(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             183 => {
-                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce183(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             184 => {
-                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce184(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             185 => {
-                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce185(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             186 => {
-                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce186(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             187 => {
-                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce187(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             188 => {
-                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce188(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             189 => {
-                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce189(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             190 => {
-                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce190(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             191 => {
-                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce191(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             192 => {
-                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce192(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             193 => {
-                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce193(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             194 => {
-                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce194(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             195 => {
-                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce195(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             196 => {
-                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce196(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             197 => {
-                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce197(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             198 => {
-                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce198(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             199 => {
-                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce199(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             200 => {
-                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce200(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             201 => {
-                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce201(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             202 => {
-                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce202(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             203 => {
-                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce203(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             204 => {
-                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce204(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             205 => {
-                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce205(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             206 => {
-                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce206(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             207 => {
-                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce207(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             208 => {
-                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce208(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             209 => {
-                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce209(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             210 => {
-                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce210(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             211 => {
-                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce211(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             212 => {
-                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce212(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             213 => {
-                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce213(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce214(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce215(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce216(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce217(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce218(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce219(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce220(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce221(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce222(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce223(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce224(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce225(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce226(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce227(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce228(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce229(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce230(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce231(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce232(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce233(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce234(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce235(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce236(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce237(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce238(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce239(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce240(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce241(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce242(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce243(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce244(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce245(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce246(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce247(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce248(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             249 => {
-                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce249(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             250 => {
-                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce250(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce251(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce252(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce253(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce254(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce255(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             256 => {
-                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce256(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             257 => {
-                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce257(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             258 => {
-                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                __reduce258(module_name, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
             }
             259 => {
-                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            260 => {
                 // __WhileStmt = WhileStmt => ActionFn(13);
-                let __sym0 = __pop_Variant64(__symbols);
+                let __sym0 = __pop_Variant62(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action13::<>(__sym0);
+                let __nt = super::__action13::<>(module_name, __sym0);
                 return Some(Ok(__nt));
             }
             _ => panic!("invalid action code {}", __action)
@@ -658571,16 +698726,6 @@
             _ => __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)>
@@ -658591,13 +698736,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant52<
+    fn __pop_Variant50<
     >(
         __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),
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -658681,16 +698826,6 @@
             _ => __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)>
@@ -658711,13 +698846,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant59<
     >(
         __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),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -658861,63 +698996,63 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant48<
+    fn __pop_Variant47<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant48<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant49<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::PathSegment, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant54<
+    fn __pop_Variant52<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ReturnStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant53<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Statement, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::Struct, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -658931,13 +699066,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
+    fn __pop_Variant56<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -658951,43 +699086,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant60<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::UnaryOp, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant63<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant64<
+    fn __pop_Variant62<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -659001,13 +699136,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant57<
     >(
         __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),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -659041,13 +699176,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant53<
+    fn __pop_Variant51<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -659101,13 +699236,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    fn __pop_Variant55<
     >(
         __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),
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -659142,1281 +699277,1443 @@
         }
     }
     fn __reduce0<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(159);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action157::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
     fn __reduce1<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(160);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __nt = super::__action158::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
     fn __reduce2<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(183);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action183::<>(__sym0);
+        let __nt = super::__action181::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
     fn __reduce3<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(184);
+        // "*"+ = "*"+, "*" => 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::__action184::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
     fn __reduce4<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(161);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action161::<>(__sym0);
+        let __nt = super::__action159::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
     fn __reduce5<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(162);
+        // "mut"? =  => ActionFn(160);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action162::<>(&__start, &__end);
+        let __nt = super::__action160::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
     fn __reduce6<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(151);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action149::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
     fn __reduce7<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(152);
+        // "pub"? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action150::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
     fn __reduce8<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(149);
+        // ("->" <Type>) = "->", Type => ActionFn(147);
         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::__action149::<>(__sym0, __sym1);
+        let __nt = super::__action147::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 4)
     }
     fn __reduce9<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(234);
+        // ("->" <Type>)? = "->", Type => ActionFn(232);
         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);
+        let __nt = super::__action232::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 5)
     }
     fn __reduce10<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(148);
+        // ("->" <Type>)? =  => ActionFn(146);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action146::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 5)
     }
     fn __reduce11<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(146);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(144);
         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::__action146::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action144::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 6)
     }
     fn __reduce12<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(241);
         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);
+        let __nt = super::__action241::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 7)
     }
     fn __reduce13<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(145);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(143);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action145::<>(&__start, &__end);
+        let __nt = super::__action143::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 7)
     }
     fn __reduce14<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(156);
+        // ("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::__action156::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 8)
     }
     fn __reduce15<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(246);
+        // ("else" <Block>)? = "else", Block => ActionFn(244);
         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);
+        let __nt = super::__action244::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 9)
     }
     fn __reduce16<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(155);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action155::<>(&__start, &__end);
+        let __nt = super::__action153::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 9)
     }
     fn __reduce17<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(140);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(138);
         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::__action140::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action138::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 10)
     }
     fn __reduce18<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(247);
         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);
+        let __nt = super::__action247::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 11)
     }
     fn __reduce19<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(139);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(137);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action137::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 11)
     }
     fn __reduce20<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(182);
+        // (<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::__action182::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 12)
     }
     fn __reduce21<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(180);
+        // (<Expression> ",")* =  => ActionFn(178);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action180::<>(&__start, &__end);
+        let __nt = super::__action178::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 13)
     }
     fn __reduce22<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(181);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action181::<>(__sym0);
+        let __nt = super::__action179::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 13)
     }
     fn __reduce23<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(250);
         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);
+        let __nt = super::__action250::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 14)
     }
     fn __reduce24<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(251);
         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);
+        let __nt = super::__action251::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 14)
     }
     fn __reduce25<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(194);
+        // (<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::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 15)
     }
     fn __reduce26<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(192);
+        // (<FnParam> ",")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action190::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 16)
     }
     fn __reduce27<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(193);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action191::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 16)
     }
     fn __reduce28<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(254);
         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);
+        let __nt = super::__action254::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 17)
     }
     fn __reduce29<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(255);
         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);
+        let __nt = super::__action255::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 17)
     }
     fn __reduce30<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(207);
+        // (<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::__action207::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 18)
     }
     fn __reduce31<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(205);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action205::<>(&__start, &__end);
+        let __nt = super::__action203::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 19)
     }
     fn __reduce32<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(206);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action206::<>(__sym0);
+        let __nt = super::__action204::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 19)
     }
     fn __reduce33<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(258);
         assert!(__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::__action258::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 20)
     }
     fn __reduce34<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(259);
         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::__action259::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 20)
     }
     fn __reduce35<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(202);
+        // (<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::__action202::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 21)
     }
     fn __reduce36<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(200);
+        // (<Ident> "::")* =  => ActionFn(198);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action200::<>(&__start, &__end);
+        let __nt = super::__action198::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 22)
     }
     fn __reduce37<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(201);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action201::<>(__sym0);
+        let __nt = super::__action199::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 22)
     }
     fn __reduce38<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(262);
         assert!(__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);
+        let __nt = super::__action262::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 23)
     }
     fn __reduce39<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(263);
         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);
+        let __nt = super::__action263::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 23)
     }
     fn __reduce40<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(199);
+        // (<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::__action199::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 24)
     }
     fn __reduce41<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(197);
+        // (<StructField> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action197::<>(&__start, &__end);
+        let __nt = super::__action195::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 25)
     }
     fn __reduce42<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(198);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action198::<>(__sym0);
+        let __nt = super::__action196::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 25)
     }
     fn __reduce43<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(266);
         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);
+        let __nt = super::__action266::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 26)
     }
     fn __reduce44<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(267);
         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);
+        let __nt = super::__action267::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 26)
     }
     fn __reduce45<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(189);
+        // (<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::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 27)
     }
     fn __reduce46<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(187);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action185::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 28)
     }
     fn __reduce47<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(188);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action186::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 28)
     }
     fn __reduce48<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(270);
         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);
+        let __nt = super::__action270::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 29)
     }
     fn __reduce49<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(271);
         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);
+        let __nt = super::__action271::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 29)
     }
     fn __reduce50<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(179);
+        // (<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::__action179::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 30)
     }
     fn __reduce51<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(177);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action177::<>(&__start, &__end);
+        let __nt = super::__action175::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 31)
     }
     fn __reduce52<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(178);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action178::<>(__sym0);
+        let __nt = super::__action176::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 31)
     }
     fn __reduce53<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(276);
+        // (<Type> ",")+ = Type, "," => ActionFn(274);
         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);
+        let __nt = super::__action274::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 32)
     }
     fn __reduce54<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(275);
         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);
+        let __nt = super::__action275::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 32)
     }
     fn __reduce55<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(172);
+        // @L =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action172::<>(&__start, &__end);
+        let __nt = super::__action170::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 33)
     }
     fn __reduce56<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(171);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action169::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
     fn __reduce57<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(348);
+        // 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 __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action348::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce58<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(349);
+        // 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 __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action349::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce59<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(350);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant56(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action350::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 35)
     }
     fn __reduce60<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(351);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant58(__symbols);
+        let __sym3 = __pop_Variant56(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 35)
     }
     fn __reduce61<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(352);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action351::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce62<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(353);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action352::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce63<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(354);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action353::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce64<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(355);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action354::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce65<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(356);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action355::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce66<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(357);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action356::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce67<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(358);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action357::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce68<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(359);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action358::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 36)
     }
     fn __reduce69<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(360);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action359::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce70<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(361);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action360::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce71<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(362);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action361::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
     fn __reduce72<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(363);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action363::<>(__sym0);
+        let __nt = super::__action362::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce73<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(364);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action364::<>(__sym0);
+        let __nt = super::__action363::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce74<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(365);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action364::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce75<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(366);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action366::<>(__sym0);
+        let __nt = super::__action365::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce76<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(367);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action367::<>(__sym0);
+        let __nt = super::__action366::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
     fn __reduce77<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(368);
+        // 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::__action368::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 39)
     }
     fn __reduce78<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = Expression => ActionFn(416);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action416::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce79<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> =  => ActionFn(417);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action417::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 40)
     }
     fn __reduce80<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(418);
@@ -660425,59 +700722,67 @@
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action418::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 40)
     }
     fn __reduce81<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Expression> = (<Expression> ",")+ => ActionFn(419);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action419::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 40)
     }
     fn __reduce82<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = FnParam => ActionFn(422);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action422::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce83<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> =  => ActionFn(423);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action423::<>(&__start, &__end);
+        let __nt = super::__action423::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 41)
     }
     fn __reduce84<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(424);
@@ -660486,59 +700791,67 @@
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action424::<>(__sym0, __sym1);
+        let __nt = super::__action424::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 41)
     }
     fn __reduce85<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(425);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action425::<>(__sym0);
+        let __nt = super::__action425::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 41)
     }
     fn __reduce86<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = Ident => ActionFn(426);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action426::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce87<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action427::<>(&__start, &__end);
+        let __nt = super::__action427::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 42)
     }
     fn __reduce88<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(428);
@@ -660547,216 +700860,244 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action428::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 42)
     }
     fn __reduce89<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Comma<Ident> = (<Ident> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action429::<>(__sym0);
+        let __nt = super::__action429::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 42)
     }
     fn __reduce90<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(438);
+        // Comma<StructField> = StructField => ActionFn(440);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action438::<>(__sym0);
+        let __nt = super::__action440::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce91<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(439);
+        // Comma<StructField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action439::<>(&__start, &__end);
+        let __nt = super::__action441::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 43)
     }
     fn __reduce92<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(440);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(442);
         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::__action440::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 43)
     }
     fn __reduce93<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(441);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action441::<>(__sym0);
+        let __nt = super::__action443::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 43)
     }
     fn __reduce94<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(442);
+        // Comma<StructInitField> = StructInitField => ActionFn(444);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action442::<>(__sym0);
+        let __nt = super::__action444::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce95<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(443);
+        // Comma<StructInitField> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action443::<>(&__start, &__end);
+        let __nt = super::__action445::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 44)
     }
     fn __reduce96<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(444);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(446);
         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::__action444::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 44)
     }
     fn __reduce97<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(445);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action445::<>(__sym0);
+        let __nt = super::__action447::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 44)
     }
     fn __reduce98<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(446);
+        // Comma<Type> = Type => ActionFn(448);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action446::<>(__sym0);
+        let __nt = super::__action448::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce99<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(447);
+        // Comma<Type> =  => ActionFn(449);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action447::<>(&__start, &__end);
+        let __nt = super::__action449::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 45)
     }
     fn __reduce100<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(448);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(450);
         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::__action448::<>(__sym0, __sym1);
+        let __nt = super::__action450::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 45)
     }
     fn __reduce101<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(449);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(451);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action449::<>(__sym0);
+        let __nt = super::__action451::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 45)
     }
     fn __reduce102<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(369);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -660767,44 +701108,50 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 46)
     }
     fn __reduce103<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = Ident => ActionFn(430);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action430::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce104<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action431::<>(&__start, &__end);
+        let __nt = super::__action431::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 47)
     }
     fn __reduce105<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(432);
@@ -660813,180 +701160,202 @@
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action432::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 47)
     }
     fn __reduce106<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(433);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action433::<>(__sym0);
+        let __nt = super::__action433::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 47)
     }
     fn __reduce107<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, "as", Type => ActionFn(370);
+        // Expression = Expression, "as", Type => ActionFn(369);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce108<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = "(", StructInitExpr, ")" => ActionFn(89);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant56(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action89::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action89::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 48)
     }
     fn __reduce109<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression = Expression4 => ActionFn(90);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action90::<>(__sym0);
+        let __nt = super::__action90::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 48)
     }
     fn __reduce110<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action76::<>(__sym0);
+        let __nt = super::__action76::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
     fn __reduce111<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(371);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(370);
         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::__action371::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action370::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 50)
     }
     fn __reduce112<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(372);
+        // 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::__action372::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce113<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(373);
+        // Expression1 = "*", Expression1 => ActionFn(372);
         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::__action373::<>(__sym0, __sym1);
+        let __nt = super::__action372::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce114<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action80::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 50)
     }
     fn __reduce115<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action81::<>(__sym0);
+        let __nt = super::__action81::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
     fn __reduce116<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
@@ -660996,30 +701365,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action82::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
     fn __reduce117<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action83::<>(__sym0);
+        let __nt = super::__action83::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
     fn __reduce118<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
@@ -661029,30 +701402,34 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
     fn __reduce119<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action85::<>(__sym0);
+        let __nt = super::__action85::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
     fn __reduce120<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression4, BinaryThirdLvlOp, Expression3 => ActionFn(86);
@@ -661062,62 +701439,70 @@
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
     fn __reduce121<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Expression4 = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action87::<>(__sym0);
+        let __nt = super::__action87::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
     fn __reduce122<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(157);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action157::<>(__sym0);
+        let __nt = super::__action155::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
     fn __reduce123<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(158);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action158::<>(&__start, &__end);
+        let __nt = super::__action156::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
     fn __reduce124<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(374);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(373);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -661125,65 +701510,73 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action373::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
     fn __reduce125<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(375);
+        // FnParam = Ident, ":", Type => ActionFn(374);
         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::__action375::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
     fn __reduce126<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(190);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action188::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
     fn __reduce127<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(191);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action189::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
     fn __reduce128<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(376);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -661192,18 +701585,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action375::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
     fn __reduce129<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(377);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(376);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -661214,18 +701609,20 @@
         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::__action376::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
     fn __reduce130<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(378);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(377);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant0(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -661239,18 +701636,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action377::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
     fn __reduce131<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(379);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(378);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -661262,18 +701661,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action378::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce132<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(380);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, ";" => ActionFn(379);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant0(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -661286,18 +701687,20 @@
         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);
+        let __nt = super::__action379::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce133<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(381);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", ";" => ActionFn(380);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -661308,18 +701711,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action380::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce134<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(381);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -661332,18 +701737,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action381::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
     fn __reduce135<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(382);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -661354,18 +701761,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action382::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
     fn __reduce136<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(384);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(383);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -661377,18 +701786,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action384::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action383::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
     fn __reduce137<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(385);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(384);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -661398,77 +701809,87 @@
         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::__action384::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
     fn __reduce138<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(386);
+        // Ident = "identifier" => ActionFn(385);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action385::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
     fn __reduce139<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(203);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action203::<>(__sym0);
+        let __nt = super::__action201::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
     fn __reduce140<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(204);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action204::<>(&__start, &__end);
+        let __nt = super::__action202::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
     fn __reduce141<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(387);
+        // IdentWithOptionalType = Ident => ActionFn(386);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action386::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
     fn __reduce142<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(388);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -661477,18 +701898,20 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
     fn __reduce143<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(389);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(388);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -661497,36 +701920,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action388::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
     fn __reduce144<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(390);
+        // IfStmt = "if", Expression, Block => ActionFn(389);
         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::__action390::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
     fn __reduce145<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(391);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(390);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -661536,36 +701963,40 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action390::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
     fn __reduce146<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(392);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(391);
         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::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action391::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
     fn __reduce147<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(393);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -661576,18 +702007,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action392::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce148<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(394);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(393);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -661597,20 +702030,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action393::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce149<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant58(__symbols);
+        let __sym6 = __pop_Variant56(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -661619,20 +702054,22 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action394::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
     fn __reduce150<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(396);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(395);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant56(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -661640,30 +702077,34 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action395::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
     fn __reduce151<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = Import => ActionFn(134);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action134::<>(__sym0);
+        let __nt = super::__action134::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
     fn __reduce152<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import> = List<Import>, Import => ActionFn(135);
@@ -661672,108 +702113,122 @@
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action135::<>(__sym0, __sym1);
+        let __nt = super::__action135::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
     fn __reduce153<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? = List<Import> => ActionFn(132);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action132::<>(__sym0);
+        let __nt = super::__action132::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
     fn __reduce154<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<Import>? =  => ActionFn(133);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action133::<>(&__start, &__end);
+        let __nt = super::__action133::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
     fn __reduce155<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = ModuleStatement => ActionFn(130);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action130::<>(__sym0);
+        let __nt = super::__action130::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
     fn __reduce156<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(131);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action131::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
     fn __reduce157<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(164);
-        let __sym0 = __pop_Variant55(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
+        let __nt = super::__action162::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
     fn __reduce158<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(165);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant55(__symbols);
+        let __sym1 = __pop_Variant53(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action165::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
     fn __reduce159<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(434);
@@ -661786,15 +702241,17 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action434::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action434::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
     fn __reduce160<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(435);
@@ -661806,154 +702263,121 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action435::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action435::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
     fn __reduce161<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Module+ = Module => ActionFn(136);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Function => ActionFn(126);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action136::<>(__sym0);
+        let __nt = super::__action126::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
     fn __reduce162<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Module+ = Module+, Module => ActionFn(137);
-        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::__action137::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (2, 71)
-    }
-    fn __reduce163<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // ModuleStatement = Function => ActionFn(126);
-        let __sym0 = __pop_Variant37(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce164<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Constant => ActionFn(127);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action127::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action127::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce165<
+    fn __reduce163<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Struct => ActionFn(128);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
+        let __nt = super::__action128::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce166<
+    fn __reduce164<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ModuleStatement = Module => ActionFn(129);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action129::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 72)
-    }
-    fn __reduce167<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Modules = Module+ => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 73)
+        let __nt = super::__action129::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
     }
-    fn __reduce168<
+    fn __reduce165<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(436);
+        // PathExpr = Ident, PathSegments => ActionFn(438);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action436::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action438::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
     }
-    fn __reduce169<
+    fn __reduce166<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(437);
+        // PathExpr = Ident => ActionFn(439);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action437::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 74)
+        let __nt = super::__action439::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
-    fn __reduce170<
+    fn __reduce167<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegment = ".", Ident => ActionFn(52);
@@ -661962,94 +702386,106 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (2, 75)
+        let __nt = super::__action52::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
     }
-    fn __reduce171<
+    fn __reduce168<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(399);
+        // PathSegment = "[", Expression, "]" => ActionFn(398);
         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::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (3, 75)
+        let __nt = super::__action398::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
     }
-    fn __reduce172<
+    fn __reduce169<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegment => ActionFn(50);
-        let __sym0 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action50::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action50::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
     }
-    fn __reduce173<
+    fn __reduce170<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // PathSegments = PathSegments, PathSegment => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant51(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 76)
+        let __nt = super::__action51::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
-    fn __reduce174<
+    fn __reduce171<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(166);
-        let __sym0 = __pop_Variant52(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action166::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action164::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
     }
-    fn __reduce175<
+    fn __reduce172<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(167);
+        // PathSegments? =  => ActionFn(165);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action167::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 77)
+        let __nt = super::__action165::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
     }
-    fn __reduce176<
+    fn __reduce173<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return", Expression => ActionFn(420);
@@ -662058,75 +702494,85 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action420::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 78)
+        let __nt = super::__action420::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
     }
-    fn __reduce177<
+    fn __reduce174<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ReturnStmt = "return" => ActionFn(421);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action421::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 78)
+        let __nt = super::__action421::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
-    fn __reduce178<
+    fn __reduce175<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = IfStmt => ActionFn(55);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action55::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce179<
+    fn __reduce176<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = WhileStmt => ActionFn(56);
-        let __sym0 = __pop_Variant64(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action56::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action56::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce180<
+    fn __reduce177<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ForStmt => ActionFn(57);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action57::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 79)
+        let __nt = super::__action57::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
-    fn __reduce181<
+    fn __reduce178<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = LetStmt, ";" => ActionFn(58);
@@ -662135,15 +702581,17 @@
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action58::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce182<
+    fn __reduce179<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = AssignStmt, ";" => ActionFn(59);
@@ -662152,15 +702600,17 @@
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action59::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce183<
+    fn __reduce180<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = FnCallExpr, ";" => ActionFn(60);
@@ -662169,35 +702619,39 @@
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action60::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action60::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce184<
+    fn __reduce181<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Statement = ReturnStmt, ";" => ActionFn(61);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action61::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 79)
+        let __nt = super::__action61::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (2, 77)
     }
-    fn __reduce185<
+    fn __reduce182<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(401);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(400);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -662209,18 +702663,20 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action401::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 80)
+        let __nt = super::__action400::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (8, 78)
     }
-    fn __reduce186<
+    fn __reduce183<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(402);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(401);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -662229,65 +702685,73 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 80)
+        let __nt = super::__action401::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (5, 78)
     }
-    fn __reduce187<
+    fn __reduce184<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(403);
+        // StructField = Ident, ":", Type => ActionFn(402);
         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::__action403::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action402::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 81)
+        (3, 79)
     }
-    fn __reduce188<
+    fn __reduce185<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(195);
+        // StructField? = StructField => ActionFn(193);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 82)
+        let __nt = super::__action193::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 80)
     }
-    fn __reduce189<
+    fn __reduce186<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(196);
+        // StructField? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action196::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 82)
+        let __nt = super::__action194::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (0, 80)
     }
-    fn __reduce190<
+    fn __reduce187<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(404);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(403);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
@@ -662295,80 +702759,90 @@
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action404::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 83)
+        let __nt = super::__action403::<>(module_name, __sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (4, 81)
     }
-    fn __reduce191<
+    fn __reduce188<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(405);
+        // StructInitField = Ident, ":", Expression => ActionFn(404);
         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::__action405::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action404::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce192<
+    fn __reduce189<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(406);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(405);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant58(__symbols);
+        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::__action406::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action405::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 84)
+        (3, 82)
     }
-    fn __reduce193<
+    fn __reduce190<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(185);
+        // StructInitField? = StructInitField => ActionFn(183);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 85)
+        let __nt = super::__action183::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 83)
     }
-    fn __reduce194<
+    fn __reduce191<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(186);
+        // StructInitField? =  => ActionFn(184);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action186::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 85)
+        let __nt = super::__action184::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 83)
     }
-    fn __reduce195<
+    fn __reduce192<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = "(", Expression, ")" => ActionFn(74);
@@ -662378,95 +702852,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action74::<>(module_name, __sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 84)
     }
-    fn __reduce196<
+    fn __reduce193<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term = Term0 => ActionFn(75);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action75::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 84)
     }
-    fn __reduce197<
+    fn __reduce194<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = ValueExpr => ActionFn(72);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action72::<>(__sym0);
+        let __nt = super::__action72::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce198<
+    fn __reduce195<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // Term0 = FnCallExpr => ActionFn(73);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action73::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 87)
+        (1, 85)
     }
-    fn __reduce199<
+    fn __reduce196<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<Import>, List<ModuleStatement> => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant44(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (2, 86)
+    }
+    fn __reduce197<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // TopLevelModule = List<ModuleStatement> => ActionFn(437);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 86)
+    }
+    fn __reduce198<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(450);
+        // Type = Ident => ActionFn(452);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action450::<>(__sym0);
+        let __nt = super::__action452::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 88)
+        (1, 87)
     }
-    fn __reduce200<
+    fn __reduce199<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(451);
+        // Type = TypeQualifier+, Ident => ActionFn(453);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action451::<>(__sym0, __sym1);
+        let __nt = super::__action453::<>(module_name, __sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 88)
+        (2, 87)
     }
-    fn __reduce201<
+    fn __reduce200<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(452);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(454);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -662474,79 +702996,89 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action452::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action454::<>(module_name, __sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 88)
+        (4, 87)
     }
-    fn __reduce202<
+    fn __reduce201<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(453);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(455);
         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 __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action453::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action455::<>(module_name, __sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 88)
+        (5, 87)
     }
-    fn __reduce203<
+    fn __reduce202<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(175);
+        // Type? = Type => ActionFn(173);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action173::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 89)
+        (1, 88)
     }
-    fn __reduce204<
+    fn __reduce203<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(176);
+        // Type? =  => ActionFn(174);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action176::<>(&__start, &__end);
+        let __nt = super::__action174::<>(module_name, &__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 89)
+        (0, 88)
     }
-    fn __reduce205<
+    fn __reduce204<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&" => ActionFn(41);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 90)
+        let __nt = super::__action41::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 89)
     }
-    fn __reduce206<
+    fn __reduce205<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "&", "mut" => ActionFn(42);
@@ -662555,15 +703087,17 @@
         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)
+        let __nt = super::__action42::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce207<
+    fn __reduce206<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "const" => ActionFn(43);
@@ -662572,15 +703106,17 @@
         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)
+        let __nt = super::__action43::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce208<
+    fn __reduce207<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // TypeQualifier = "*", "mut" => ActionFn(44);
@@ -662589,181 +703125,205 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action44::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (2, 90)
+        let __nt = super::__action44::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (2, 89)
     }
-    fn __reduce209<
+    fn __reduce208<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => ActionFn(169);
+        // TypeQualifier* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default();
         let __end = __start;
-        let __nt = super::__action169::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (0, 91)
+        let __nt = super::__action167::<>(module_name, &__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 90)
     }
-    fn __reduce210<
+    fn __reduce209<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(170);
-        let __sym0 = __pop_Variant61(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 91)
+        let __nt = super::__action168::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 90)
     }
-    fn __reduce211<
+    fn __reduce210<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(173);
-        let __sym0 = __pop_Variant60(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action173::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action171::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 91)
     }
-    fn __reduce212<
+    fn __reduce211<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(174);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant60(__symbols);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant59(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action174::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (2, 92)
+        let __nt = super::__action172::<>(module_name, __sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (2, 91)
     }
-    fn __reduce213<
+    fn __reduce212<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (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)
+        let __nt = super::__action409::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce214<
+    fn __reduce213<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "!" => ActionFn(410);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action410::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce215<
+    fn __reduce214<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // UnaryOp = "~" => ActionFn(411);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action411::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 93)
+        let __nt = super::__action411::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 92)
     }
-    fn __reduce216<
+    fn __reduce215<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "integer" => ActionFn(412);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action412::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action412::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce217<
+    fn __reduce216<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "boolean" => ActionFn(413);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action413::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce218<
+    fn __reduce217<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = "string" => ActionFn(414);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action414::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce219<
+    fn __reduce218<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // ValueExpr = PathExpr => ActionFn(113);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action113::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 94)
+        let __nt = super::__action113::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 93)
     }
-    fn __reduce220<
+    fn __reduce219<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // WhileStmt = "while", Expression, Block => ActionFn(415);
@@ -662773,962 +703333,1163 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action415::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
-        (3, 95)
+        let __nt = super::__action415::<>(module_name, __sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 94)
     }
-    fn __reduce221<
+    fn __reduce220<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __AssignStmt = AssignStmt => ActionFn(11);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action11::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 96)
+        (1, 95)
     }
-    fn __reduce222<
+    fn __reduce221<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action24::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 96)
     }
-    fn __reduce223<
+    fn __reduce222<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(25);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action25::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 98)
+        (1, 97)
     }
-    fn __reduce224<
+    fn __reduce223<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(26);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action26::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 99)
+        (1, 98)
     }
-    fn __reduce225<
+    fn __reduce224<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Block = Block => ActionFn(7);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action7::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 100)
+        (1, 99)
     }
-    fn __reduce226<
+    fn __reduce225<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Constant = Constant => ActionFn(33);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action33::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 101)
+        (1, 100)
     }
-    fn __reduce227<
+    fn __reduce226<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression = Expression => ActionFn(23);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action23::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    fn __reduce228<
+    fn __reduce227<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression0 = Expression0 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action18::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 102)
     }
-    fn __reduce229<
+    fn __reduce228<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression1 = Expression1 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action19::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 103)
     }
-    fn __reduce230<
+    fn __reduce229<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression2 = Expression2 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action20::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 105)
+        (1, 104)
     }
-    fn __reduce231<
+    fn __reduce230<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression3 = Expression3 => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action21::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 106)
+        (1, 105)
     }
-    fn __reduce232<
+    fn __reduce231<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Expression4 = Expression4 => ActionFn(22);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action22::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 107)
+        (1, 106)
     }
-    fn __reduce233<
+    fn __reduce232<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnCallExpr = FnCallExpr => ActionFn(9);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action9::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 108)
+        (1, 107)
     }
-    fn __reduce234<
+    fn __reduce233<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __FnParam = FnParam => ActionFn(31);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action31::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 109)
+        (1, 108)
     }
-    fn __reduce235<
+    fn __reduce234<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ForStmt = ForStmt => ActionFn(14);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action14::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 110)
+        (1, 109)
     }
-    fn __reduce236<
+    fn __reduce235<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Function = Function => ActionFn(32);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action32::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 111)
+        (1, 110)
     }
-    fn __reduce237<
+    fn __reduce236<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Ident = Ident => ActionFn(0);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action0::<>(__sym0);
+        let __nt = super::__action0::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 112)
+        (1, 111)
     }
-    fn __reduce238<
+    fn __reduce237<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action3::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 113)
+        (1, 112)
     }
-    fn __reduce239<
+    fn __reduce238<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __IfStmt = IfStmt => ActionFn(15);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action15::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 114)
+        (1, 113)
     }
-    fn __reduce240<
+    fn __reduce239<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Import = Import => ActionFn(36);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action36::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 115)
+        (1, 114)
     }
-    fn __reduce241<
+    fn __reduce240<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __LetStmt = LetStmt => ActionFn(10);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action10::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
-    fn __reduce242<
+    fn __reduce241<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __Module = Module => ActionFn(38);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action38::<>(__sym0);
+        let __nt = super::__action38::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    fn __reduce242<
+        'module_name,
+    >(
+        module_name: &'module_name str,
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<(&'module_name ())>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action39::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 117)
     }
     fn __reduce243<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(39);
+        // __PathExpr = PathExpr => ActionFn(4);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
+        let __nt = super::__action4::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 118)
     }
     fn __reduce244<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Modules = Modules => ActionFn(37);
+        // __PathSegment = PathSegment => ActionFn(6);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action37::<>(__sym0);
+        let __nt = super::__action6::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 119)
     }
     fn __reduce245<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(4);
+        // __PathSegments = PathSegments => ActionFn(5);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 120)
     }
     fn __reduce246<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant51(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        let __nt = super::__action12::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     fn __reduce247<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant53(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action8::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
         (1, 122)
     }
     fn __reduce248<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        // __Struct = Struct => ActionFn(35);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action35::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
         (1, 123)
     }
     fn __reduce249<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __StructField = StructField => ActionFn(34);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        let __nt = super::__action34::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (1, 124)
     }
     fn __reduce250<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(35);
+        // __StructInitExpr = StructInitExpr => ActionFn(30);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action30::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
         (1, 125)
     }
     fn __reduce251<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(34);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitField = StructInitField => ActionFn(29);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        let __nt = super::__action29::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (1, 126)
     }
     fn __reduce252<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(30);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        let __nt = super::__action17::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 127)
     }
     fn __reduce253<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(29);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        let __nt = super::__action16::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 128)
     }
     fn __reduce254<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(17);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __TopLevelModule = TopLevelModule => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action37::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 129)
     }
     fn __reduce255<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(16);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action2::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 130)
     }
     fn __reduce256<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(2);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        let __nt = super::__action1::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
         (1, 131)
     }
     fn __reduce257<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        // __UnaryOp = UnaryOp => ActionFn(27);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
+        let __nt = super::__action27::<>(module_name, __sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
         (1, 132)
     }
     fn __reduce258<
+        'module_name,
     >(
+        module_name: &'module_name str,
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __UnaryOp = UnaryOp => ActionFn(27);
-        let __sym0 = __pop_Variant62(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 133)
-    }
-    fn __reduce259<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
+        _: core::marker::PhantomData<(&'module_name ())>,
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(28);
-        let __sym0 = __pop_Variant63(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
-        (1, 134)
+        let __nt = super::__action28::<>(module_name, __sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 133)
     }
 }
 #[allow(unused_imports)]
 pub(crate) use self::__parse__WhileStmt::WhileStmtParser;
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action0<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Ident, usize),
 ) -> ast::Ident
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action1<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::TypeQualifier, usize),
 ) -> ast::TypeQualifier
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action2<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Type, usize),
 ) -> ast::Type
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action3<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Type, usize),
 ) -> ast::Type
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action4<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::PathExpr, usize),
 ) -> ast::PathExpr
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action5<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, Vec<ast::PathSegment>, usize),
 ) -> Vec<ast::PathSegment>
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action6<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::PathSegment, usize),
 ) -> ast::PathSegment
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action7<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Block, usize),
 ) -> ast::Block
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action8<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Statement, usize),
 ) -> ast::Statement
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action9<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::FnCallExpr, usize),
 ) -> ast::FnCallExpr
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action10<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::LetStmt, usize),
 ) -> ast::LetStmt
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action11<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::AssignStmt, usize),
 ) -> ast::AssignStmt
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action12<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::ReturnStmt, usize),
 ) -> ast::ReturnStmt
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action13<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::WhileStmt, usize),
 ) -> ast::WhileStmt
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action14<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::ForStmt, usize),
 ) -> ast::ForStmt
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action15<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::IfStmt, usize),
 ) -> ast::IfStmt
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action16<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action17<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action18<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action19<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action20<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action21<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action22<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action23<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action24<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::BinaryOp, usize),
 ) -> ast::BinaryOp
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action25<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::BinaryOp, usize),
 ) -> ast::BinaryOp
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action26<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::BinaryOp, usize),
 ) -> ast::BinaryOp
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action27<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::UnaryOp, usize),
 ) -> ast::UnaryOp
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action28<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::ValueExpr, usize),
 ) -> ast::ValueExpr
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action29<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, (ast::Ident, ast::StructInitField), usize),
 ) -> (ast::Ident, ast::StructInitField)
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action30<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::StructInitExpr, usize),
 ) -> ast::StructInitExpr
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action31<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::FnParam, usize),
 ) -> ast::FnParam
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action32<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Function, usize),
 ) -> ast::Function
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action33<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Constant, usize),
 ) -> ast::Constant
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action34<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::StructField, usize),
 ) -> ast::StructField
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action35<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Struct, usize),
 ) -> ast::Struct
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action36<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Import, usize),
 ) -> ast::Import
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action37<
+    'module_name,
 >(
-    (_, __0, _): (usize, Vec<ast::Module>, usize),
-) -> Vec<ast::Module>
+    module_name: &'module_name str,
+    (_, __0, _): (usize, ast::Module, usize),
+) -> ast::Module
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action38<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Module, usize),
 ) -> ast::Module
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action39<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::ModuleStatement, usize),
 ) -> ast::ModuleStatement
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action40<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, name, _): (usize, String, usize),
     (_, hi, _): (usize, usize, usize),
@@ -663740,18 +704501,24 @@
   }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action41<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, Token, usize),
 ) -> ast::TypeQualifier
 {
     ast::TypeQualifier::Ref
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action42<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, Token, usize),
     (_, __1, _): (usize, Token, usize),
 ) -> ast::TypeQualifier
@@ -663759,9 +704526,12 @@
     ast::TypeQualifier::RefMut
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action43<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, Token, usize),
     (_, __1, _): (usize, Token, usize),
 ) -> ast::TypeQualifier
@@ -663769,9 +704539,12 @@
     ast::TypeQualifier::Ptr
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action44<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, Token, usize),
     (_, __1, _): (usize, Token, usize),
 ) -> ast::TypeQualifier
@@ -663779,9 +704552,12 @@
     ast::TypeQualifier::PtrMut
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action45<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, qualifiers, _): (usize, alloc::vec::Vec<ast::TypeQualifier>, usize),
     (_, name, _): (usize, ast::Ident, usize),
@@ -663796,9 +704572,12 @@
     }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action46<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, qualifiers, _): (usize, alloc::vec::Vec<ast::TypeQualifier>, usize),
     (_, name, _): (usize, ast::Ident, usize),
@@ -663816,9 +704595,12 @@
     }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action47<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, name, _): (usize, ast::Ident, usize),
     (_, hi, _): (usize, usize, usize),
@@ -663832,9 +704614,12 @@
     }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action48<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, name, _): (usize, ast::Ident, usize),
     (_, _, _): (usize, Token, usize),
@@ -663852,9 +704637,12 @@
     }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action49<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, first, _): (usize, ast::Ident, usize),
     (_, extra, _): (usize, core::option::Option<Vec<ast::PathSegment>>, usize),
@@ -663868,18 +704656,24 @@
   }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action50<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::PathSegment, usize),
 ) -> Vec<ast::PathSegment>
 {
     vec![__0]
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action51<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, mut s, _): (usize, Vec<ast::PathSegment>, usize),
     (_, n, _): (usize, ast::PathSegment, usize),
 ) -> Vec<ast::PathSegment>
@@ -663890,9 +704684,12 @@
   }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action52<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, _, _): (usize, Token, usize),
     (_, __0, _): (usize, ast::Ident, usize),
 ) -> ast::PathSegment
@@ -663900,9 +704697,12 @@
     ast::PathSegment::Field(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action53<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, value, _): (usize, ast::Expression, usize),
@@ -663916,9 +704716,12 @@
   }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action54<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, body, _): (usize, Vec<ast::Statement>, usize),
@@ -663932,36 +704735,48 @@
     }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action55<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::IfStmt, usize),
 ) -> ast::Statement
 {
     ast::Statement::If(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action56<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::WhileStmt, usize),
 ) -> ast::Statement
 {
     ast::Statement::While(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action57<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::ForStmt, usize),
 ) -> ast::Statement
 {
     ast::Statement::For(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action58<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::LetStmt, usize),
     (_, _, _): (usize, Token, usize),
 ) -> ast::Statement
@@ -663969,9 +704784,12 @@
     ast::Statement::Let(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action59<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::AssignStmt, usize),
     (_, _, _): (usize, Token, usize),
 ) -> ast::Statement
@@ -663979,9 +704797,12 @@
     ast::Statement::Assign(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action60<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::FnCallExpr, usize),
     (_, _, _): (usize, Token, usize),
 ) -> ast::Statement
@@ -663989,9 +704810,12 @@
     ast::Statement::FnCall(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action61<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::ReturnStmt, usize),
     (_, _, _): (usize, Token, usize),
 ) -> ast::Statement
@@ -663999,9 +704823,12 @@
     ast::Statement::Return(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action62<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, name, _): (usize, ast::Ident, usize),
     (_, _, _): (usize, Token, usize),
@@ -664017,9 +704844,12 @@
   }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action63<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, is_mut, _): (usize, core::option::Option<Token>, usize),
@@ -664040,9 +704870,12 @@
   }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action64<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, is_mut, _): (usize, core::option::Option<Token>, usize),
@@ -664063,9 +704896,12 @@
   }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action65<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, deref, _): (usize, alloc::vec::Vec<Token>, usize),
     (_, name, _): (usize, ast::PathExpr, usize),
@@ -664082,9 +704918,12 @@
   }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action66<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, deref, _): (usize, alloc::vec::Vec<Token>, usize),
     (_, name, _): (usize, ast::PathExpr, usize),
@@ -664101,9 +704940,12 @@
   }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action67<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, value, _): (usize, core::option::Option<ast::Expression>, usize),
@@ -664116,9 +704958,12 @@
   }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action68<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, condition, _): (usize, ast::Expression, usize),
@@ -664135,9 +704980,12 @@
   }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action69<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, name, _): (usize, ast::Ident, usize),
@@ -664156,9 +705004,12 @@
     }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action70<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, name, _): (usize, ast::Ident, usize),
@@ -664179,9 +705030,12 @@
     }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action71<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, condition, _): (usize, ast::Expression, usize),
@@ -664200,27 +705054,36 @@
   }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action72<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::ValueExpr, usize),
 ) -> ast::Expression
 {
     ast::Expression::Value(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action73<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::FnCallExpr, usize),
 ) -> ast::Expression
 {
     ast::Expression::FnCall(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action74<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, _, _): (usize, Token, usize),
     (_, __0, _): (usize, ast::Expression, usize),
     (_, _, _): (usize, Token, usize),
@@ -664229,27 +705092,36 @@
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action75<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action76<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action77<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, _, _): (usize, Token, usize),
@@ -664260,9 +705132,12 @@
     ast::Expression::AsRef(Box::new(e), true, ast::Span::new(lo, hi))
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action78<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, e, _): (usize, ast::Expression, usize),
@@ -664272,9 +705147,12 @@
     ast::Expression::AsRef(Box::new(e), false, ast::Span::new(lo, hi))
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action79<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, e, _): (usize, ast::Expression, usize),
@@ -664284,9 +705162,12 @@
     ast::Expression::Deref(Box::new(e), ast::Span::new(lo, hi))
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action80<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, op, _): (usize, ast::UnaryOp, usize),
     (_, rhs, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
@@ -664297,18 +705178,24 @@
   )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action81<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action82<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lhs, _): (usize, ast::Expression, usize),
     (_, op, _): (usize, ast::BinaryOp, usize),
     (_, rhs, _): (usize, ast::Expression, usize),
@@ -664321,18 +705208,24 @@
   )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action83<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action84<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lhs, _): (usize, ast::Expression, usize),
     (_, op, _): (usize, ast::BinaryOp, usize),
     (_, rhs, _): (usize, ast::Expression, usize),
@@ -664345,18 +705238,24 @@
   )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action85<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action86<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lhs, _): (usize, ast::Expression, usize),
     (_, op, _): (usize, ast::BinaryOp, usize),
     (_, rhs, _): (usize, ast::Expression, usize),
@@ -664369,18 +705268,24 @@
   )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action87<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action88<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, a, _): (usize, ast::Expression, usize),
     (_, _, _): (usize, Token, usize),
@@ -664391,9 +705296,12 @@
     ast::Expression::Cast(Box::new(a), b, ast::Span::new(lo, hi))
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action89<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, _, _): (usize, Token, usize),
     (_, __0, _): (usize, ast::StructInitExpr, usize),
     (_, _, _): (usize, Token, usize),
@@ -664402,18 +705310,24 @@
     ast::Expression::StructInit(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action90<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
 {
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action91<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, hi, _): (usize, usize, usize),
@@ -664422,9 +705336,12 @@
     ast::BinaryOp::Compare(ast::CmpOp::Eq, ast::Span::new(lo, hi))
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action92<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, hi, _): (usize, usize, usize),
@@ -664433,9 +705350,12 @@
     ast::BinaryOp::Compare(ast::CmpOp::NotEq, ast::Span::new(lo, hi))
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action93<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, hi, _): (usize, usize, usize),
@@ -664444,9 +705364,12 @@
     ast::BinaryOp::Compare(ast::CmpOp::Lt, ast::Span::new(lo, hi))
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action94<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, hi, _): (usize, usize, usize),
@@ -664455,9 +705378,12 @@
     ast::BinaryOp::Compare(ast::CmpOp::Gt, ast::Span::new(lo, hi))
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action95<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, hi, _): (usize, usize, usize),
@@ -664466,9 +705392,12 @@
     ast::BinaryOp::Compare(ast::CmpOp::LtEq, ast::Span::new(lo, hi))
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action96<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, hi, _): (usize, usize, usize),
@@ -664477,9 +705406,12 @@
     ast::BinaryOp::Compare(ast::CmpOp::GtEq, ast::Span::new(lo, hi))
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action97<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, hi, _): (usize, usize, usize),
@@ -664488,9 +705420,12 @@
     ast::BinaryOp::Logic(ast::LogicOp::And, ast::Span::new(lo, hi))
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action98<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, hi, _): (usize, usize, usize),
@@ -664499,9 +705434,12 @@
     ast::BinaryOp::Logic(ast::LogicOp::Or, ast::Span::new(lo, hi))
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action99<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, hi, _): (usize, usize, usize),
@@ -664510,9 +705448,12 @@
     ast::BinaryOp::Arith(ast::ArithOp::Div, ast::Span::new(lo, hi))
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action100<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, hi, _): (usize, usize, usize),
@@ -664521,9 +705462,12 @@
     ast::BinaryOp::Arith(ast::ArithOp::Mul, ast::Span::new(lo, hi))
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action101<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, hi, _): (usize, usize, usize),
@@ -664532,9 +705476,12 @@
     ast::BinaryOp::Arith(ast::ArithOp::Mod, ast::Span::new(lo, hi))
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action102<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, hi, _): (usize, usize, usize),
@@ -664543,9 +705490,12 @@
     ast::BinaryOp::Arith(ast::ArithOp::Add, ast::Span::new(lo, hi))
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action103<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, hi, _): (usize, usize, usize),
@@ -664554,9 +705504,12 @@
     ast::BinaryOp::Arith(ast::ArithOp::Sub, ast::Span::new(lo, hi))
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action104<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, hi, _): (usize, usize, usize),
@@ -664565,9 +705518,12 @@
     ast::BinaryOp::Bitwise(ast::BitwiseOp::And, ast::Span::new(lo, hi))
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action105<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, hi, _): (usize, usize, usize),
@@ -664576,9 +705532,12 @@
     ast::BinaryOp::Bitwise(ast::BitwiseOp::Or, ast::Span::new(lo, hi))
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action106<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, hi, _): (usize, usize, usize),
@@ -664587,9 +705546,12 @@
     ast::BinaryOp::Bitwise(ast::BitwiseOp::Xor, ast::Span::new(lo, hi))
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action107<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, hi, _): (usize, usize, usize),
@@ -664598,9 +705560,12 @@
     ast::UnaryOp::ArithNeg(ast::Span::new(lo, hi))
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action108<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, hi, _): (usize, usize, usize),
@@ -664609,9 +705574,12 @@
     ast::UnaryOp::LogicalNot(ast::Span::new(lo, hi))
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action109<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, hi, _): (usize, usize, usize),
@@ -664620,9 +705588,12 @@
     ast::UnaryOp::BitwiseNot(ast::Span::new(lo, hi))
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action110<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, value, _): (usize, u128, usize),
     (_, hi, _): (usize, usize, usize),
@@ -664634,9 +705605,12 @@
   }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action111<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, value, _): (usize, bool, usize),
     (_, hi, _): (usize, usize, usize),
@@ -664648,9 +705622,12 @@
   }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action112<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, value, _): (usize, String, usize),
     (_, hi, _): (usize, usize, usize),
@@ -664662,18 +705639,24 @@
   }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action113<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::PathExpr, usize),
 ) -> ast::ValueExpr
 {
     ast::ValueExpr::Path(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action114<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, name, _): (usize, ast::Ident, usize),
     (_, _, _): (usize, Token, usize),
@@ -664687,9 +705670,12 @@
     })
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action115<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, name, _): (usize, ast::Ident, usize),
     (_, _, _): (usize, Token, usize),
@@ -664703,9 +705689,12 @@
     })
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action116<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, name, _): (usize, ast::Type, usize),
     (_, _, _): (usize, Token, usize),
@@ -664721,9 +705710,12 @@
   }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action117<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, name, _): (usize, ast::Ident, usize),
     (_, _, _): (usize, Token, usize),
@@ -664738,9 +705730,12 @@
     }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action118<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, is_public, _): (usize, core::option::Option<Token>, usize),
     (_, _, _): (usize, Token, usize),
@@ -664765,9 +705760,12 @@
     }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action119<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, is_public, _): (usize, core::option::Option<Token>, usize),
     (_, _, _): (usize, Token, usize),
@@ -664791,9 +705789,12 @@
     }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action120<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, name, _): (usize, ast::Ident, usize),
@@ -664813,9 +705814,12 @@
     }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action121<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, name, _): (usize, ast::Ident, usize),
     (_, _, _): (usize, Token, usize),
@@ -664830,9 +705834,12 @@
     }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action122<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, name, _): (usize, ast::Ident, usize),
@@ -664851,9 +705858,12 @@
     }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action123<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, module, _): (usize, Vec<ast::Ident>, usize),
@@ -664869,18 +705879,35 @@
     }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action124<
+    'module_name,
 >(
-    (_, __0, _): (usize, alloc::vec::Vec<ast::Module>, usize),
-) -> Vec<ast::Module>
+    module_name: &'module_name str,
+    (_, lo, _): (usize, usize, usize),
+    (_, imports, _): (usize, core::option::Option<Vec<ast::Import>>, usize),
+    (_, contents, _): (usize, Vec<ast::ModuleStatement>, usize),
+    (_, hi, _): (usize, usize, usize),
+) -> ast::Module
 {
-    __0
+    ast::Module {
+        name: ast::Ident {
+          name: module_name.to_string(),
+          span: ast::Span::new(0, 0),
+        },
+        imports: imports.unwrap_or(vec![]),
+        contents,
+        span: ast::Span::new(lo, hi),
+    }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action125<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, name, _): (usize, ast::Ident, usize),
@@ -664899,54 +705926,72 @@
     }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action126<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Function, usize),
 ) -> ast::ModuleStatement
 {
     ast::ModuleStatement::Function(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action127<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Constant, usize),
 ) -> ast::ModuleStatement
 {
     ast::ModuleStatement::Constant(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action128<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Struct, usize),
 ) -> ast::ModuleStatement
 {
     ast::ModuleStatement::Struct(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action129<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Module, usize),
 ) -> ast::ModuleStatement
 {
     ast::ModuleStatement::Module(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action130<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::ModuleStatement, usize),
 ) -> Vec<ast::ModuleStatement>
 {
     vec![__0]
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action131<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, mut s, _): (usize, Vec<ast::ModuleStatement>, usize),
     (_, n, _): (usize, ast::ModuleStatement, usize),
 ) -> Vec<ast::ModuleStatement>
@@ -664957,18 +706002,24 @@
   }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action132<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, Vec<ast::Import>, usize),
 ) -> core::option::Option<Vec<ast::Import>>
 {
     Some(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action133<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> core::option::Option<Vec<ast::Import>>
@@ -664976,18 +706027,24 @@
     None
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action134<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Import, usize),
 ) -> Vec<ast::Import>
 {
     vec![__0]
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action135<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, mut s, _): (usize, Vec<ast::Import>, usize),
     (_, n, _): (usize, ast::Import, usize),
 ) -> Vec<ast::Import>
@@ -664998,37 +706055,24 @@
   }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
 fn __action136<
+    'module_name,
 >(
-    (_, __0, _): (usize, ast::Module, usize),
-) -> alloc::vec::Vec<ast::Module>
-{
-    alloc::vec![__0]
-}
-
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action137<
->(
-    (_, 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, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action138<
->(
+    module_name: &'module_name str,
     (_, __0, _): (usize, Vec<ast::Ident>, usize),
 ) -> core::option::Option<Vec<ast::Ident>>
 {
     Some(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action139<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action137<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> core::option::Option<Vec<ast::Ident>>
@@ -665036,9 +706080,12 @@
     None
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action140<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action138<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, _, _): (usize, Token, usize),
     (_, __0, _): (usize, Vec<ast::Ident>, usize),
     (_, _, _): (usize, Token, usize),
@@ -665047,9 +706094,12 @@
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action141<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action139<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, mut v, _): (usize, alloc::vec::Vec<ast::Ident>, usize),
     (_, e, _): (usize, core::option::Option<ast::Ident>, usize),
 ) -> Vec<ast::Ident>
@@ -665063,9 +706113,12 @@
     }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action142<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action140<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, mut v, _): (usize, alloc::vec::Vec<ast::Ident>, usize),
     (_, e, _): (usize, core::option::Option<ast::Ident>, usize),
 ) -> Vec<ast::Ident>
@@ -665079,9 +706132,12 @@
     }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action143<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action141<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, mut v, _): (usize, alloc::vec::Vec<ast::StructField>, usize),
     (_, e, _): (usize, core::option::Option<ast::StructField>, usize),
 ) -> Vec<ast::StructField>
@@ -665095,18 +706151,24 @@
     }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action144<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action142<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, Vec<ast::Type>, usize),
 ) -> core::option::Option<Vec<ast::Type>>
 {
     Some(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action145<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action143<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> core::option::Option<Vec<ast::Type>>
@@ -665114,9 +706176,12 @@
     None
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action146<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action144<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, _, _): (usize, Token, usize),
     (_, __0, _): (usize, Vec<ast::Type>, usize),
     (_, _, _): (usize, Token, usize),
@@ -665125,18 +706190,24 @@
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action147<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action145<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Type, usize),
 ) -> core::option::Option<ast::Type>
 {
     Some(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action148<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action146<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> core::option::Option<ast::Type>
@@ -665144,9 +706215,12 @@
     None
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action149<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action147<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, _, _): (usize, Token, usize),
     (_, __0, _): (usize, ast::Type, usize),
 ) -> ast::Type
@@ -665154,9 +706228,12 @@
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action150<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action148<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, mut v, _): (usize, alloc::vec::Vec<ast::FnParam>, usize),
     (_, e, _): (usize, core::option::Option<ast::FnParam>, usize),
 ) -> Vec<ast::FnParam>
@@ -665170,18 +706247,24 @@
     }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action151<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action149<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, Token, usize),
 ) -> core::option::Option<Token>
 {
     Some(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action152<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action150<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> core::option::Option<Token>
@@ -665189,9 +706272,12 @@
     None
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action153<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action151<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, mut v, _): (usize, alloc::vec::Vec<(ast::Ident, ast::StructInitField)>, usize),
     (_, e, _): (usize, core::option::Option<(ast::Ident, ast::StructInitField)>, usize),
 ) -> Vec<(ast::Ident, ast::StructInitField)>
@@ -665205,18 +706291,24 @@
     }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action154<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action152<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Block, usize),
 ) -> core::option::Option<ast::Block>
 {
     Some(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action155<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action153<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> core::option::Option<ast::Block>
@@ -665224,9 +706316,12 @@
     None
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action156<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action154<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, _, _): (usize, Token, usize),
     (_, __0, _): (usize, ast::Block, usize),
 ) -> ast::Block
@@ -665234,18 +706329,24 @@
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action157<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action155<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> core::option::Option<ast::Expression>
 {
     Some(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action158<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action156<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> core::option::Option<ast::Expression>
@@ -665253,9 +706354,12 @@
     None
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action159<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action157<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> alloc::vec::Vec<Token>
@@ -665263,27 +706367,36 @@
     alloc::vec![]
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action160<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action158<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, v, _): (usize, alloc::vec::Vec<Token>, usize),
 ) -> alloc::vec::Vec<Token>
 {
     v
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action161<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action159<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, Token, usize),
 ) -> core::option::Option<Token>
 {
     Some(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action162<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action160<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> core::option::Option<Token>
@@ -665291,9 +706404,12 @@
     None
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action163<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action161<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, mut v, _): (usize, alloc::vec::Vec<ast::Expression>, usize),
     (_, e, _): (usize, core::option::Option<ast::Expression>, usize),
 ) -> Vec<ast::Expression>
@@ -665307,18 +706423,24 @@
     }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action164<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action162<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Statement, usize),
 ) -> Vec<ast::Statement>
 {
     vec![__0]
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action165<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action163<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, mut s, _): (usize, Vec<ast::Statement>, usize),
     (_, n, _): (usize, ast::Statement, usize),
 ) -> Vec<ast::Statement>
@@ -665329,18 +706451,24 @@
   }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action166<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action164<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, Vec<ast::PathSegment>, usize),
 ) -> core::option::Option<Vec<ast::PathSegment>>
 {
     Some(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action167<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action165<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> core::option::Option<Vec<ast::PathSegment>>
@@ -665348,9 +706476,12 @@
     None
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action168<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action166<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, mut v, _): (usize, alloc::vec::Vec<ast::Type>, usize),
     (_, e, _): (usize, core::option::Option<ast::Type>, usize),
 ) -> Vec<ast::Type>
@@ -665364,9 +706495,12 @@
     }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action169<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action167<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> alloc::vec::Vec<ast::TypeQualifier>
@@ -665374,17 +706508,23 @@
     alloc::vec![]
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action170<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action168<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, v, _): (usize, alloc::vec::Vec<ast::TypeQualifier>, usize),
 ) -> alloc::vec::Vec<ast::TypeQualifier>
 {
     v
 }
 
-fn __action171<
+#[allow(unused_variables)]
+fn __action169<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> usize
@@ -665392,8 +706532,11 @@
     *__lookbehind
 }
 
-fn __action172<
+#[allow(unused_variables)]
+fn __action170<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> usize
@@ -665401,18 +706544,24 @@
     *__lookahead
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action173<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action171<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::TypeQualifier, usize),
 ) -> alloc::vec::Vec<ast::TypeQualifier>
 {
     alloc::vec![__0]
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action174<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action172<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, v, _): (usize, alloc::vec::Vec<ast::TypeQualifier>, usize),
     (_, e, _): (usize, ast::TypeQualifier, usize),
 ) -> alloc::vec::Vec<ast::TypeQualifier>
@@ -665420,18 +706569,24 @@
     { let mut v = v; v.push(e); v }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action175<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action173<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Type, usize),
 ) -> core::option::Option<ast::Type>
 {
     Some(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action176<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action174<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> core::option::Option<ast::Type>
@@ -665439,9 +706594,12 @@
     None
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action177<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action175<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> alloc::vec::Vec<ast::Type>
@@ -665449,18 +706607,24 @@
     alloc::vec![]
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action178<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action176<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, v, _): (usize, alloc::vec::Vec<ast::Type>, usize),
 ) -> alloc::vec::Vec<ast::Type>
 {
     v
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action179<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action177<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Type, usize),
     (_, _, _): (usize, Token, usize),
 ) -> ast::Type
@@ -665468,9 +706632,12 @@
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action180<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action178<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> alloc::vec::Vec<ast::Expression>
@@ -665478,18 +706645,24 @@
     alloc::vec![]
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action181<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action179<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, v, _): (usize, alloc::vec::Vec<ast::Expression>, usize),
 ) -> alloc::vec::Vec<ast::Expression>
 {
     v
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action182<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action180<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Expression, usize),
     (_, _, _): (usize, Token, usize),
 ) -> ast::Expression
@@ -665497,18 +706670,24 @@
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action183<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action181<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, Token, usize),
 ) -> alloc::vec::Vec<Token>
 {
     alloc::vec![__0]
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action184<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action182<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, v, _): (usize, alloc::vec::Vec<Token>, usize),
     (_, e, _): (usize, Token, usize),
 ) -> alloc::vec::Vec<Token>
@@ -665516,18 +706695,24 @@
     { let mut v = v; v.push(e); v }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action185<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action183<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, (ast::Ident, ast::StructInitField), usize),
 ) -> core::option::Option<(ast::Ident, ast::StructInitField)>
 {
     Some(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action186<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action184<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> core::option::Option<(ast::Ident, ast::StructInitField)>
@@ -665535,9 +706720,12 @@
     None
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action187<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action185<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> alloc::vec::Vec<(ast::Ident, ast::StructInitField)>
@@ -665545,18 +706733,24 @@
     alloc::vec![]
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action188<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action186<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, v, _): (usize, alloc::vec::Vec<(ast::Ident, ast::StructInitField)>, usize),
 ) -> alloc::vec::Vec<(ast::Ident, ast::StructInitField)>
 {
     v
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action189<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action187<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, (ast::Ident, ast::StructInitField), usize),
     (_, _, _): (usize, Token, usize),
 ) -> (ast::Ident, ast::StructInitField)
@@ -665564,18 +706758,24 @@
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action190<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action188<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::FnParam, usize),
 ) -> core::option::Option<ast::FnParam>
 {
     Some(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action191<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action189<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> core::option::Option<ast::FnParam>
@@ -665583,9 +706783,12 @@
     None
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action192<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action190<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> alloc::vec::Vec<ast::FnParam>
@@ -665593,18 +706796,24 @@
     alloc::vec![]
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action193<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action191<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, v, _): (usize, alloc::vec::Vec<ast::FnParam>, usize),
 ) -> alloc::vec::Vec<ast::FnParam>
 {
     v
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action194<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action192<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::FnParam, usize),
     (_, _, _): (usize, Token, usize),
 ) -> ast::FnParam
@@ -665612,18 +706821,24 @@
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action195<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action193<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::StructField, usize),
 ) -> core::option::Option<ast::StructField>
 {
     Some(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action196<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action194<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> core::option::Option<ast::StructField>
@@ -665631,9 +706846,12 @@
     None
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action197<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action195<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> alloc::vec::Vec<ast::StructField>
@@ -665641,18 +706859,24 @@
     alloc::vec![]
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action198<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action196<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, v, _): (usize, alloc::vec::Vec<ast::StructField>, usize),
 ) -> alloc::vec::Vec<ast::StructField>
 {
     v
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action199<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action197<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::StructField, usize),
     (_, _, _): (usize, Token, usize),
 ) -> ast::StructField
@@ -665660,9 +706884,12 @@
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action200<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action198<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> alloc::vec::Vec<ast::Ident>
@@ -665670,18 +706897,24 @@
     alloc::vec![]
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action201<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action199<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, v, _): (usize, alloc::vec::Vec<ast::Ident>, usize),
 ) -> alloc::vec::Vec<ast::Ident>
 {
     v
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action202<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action200<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Ident, usize),
     (_, _, _): (usize, Token, usize),
 ) -> ast::Ident
@@ -665689,18 +706922,24 @@
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action203<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action201<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Ident, usize),
 ) -> core::option::Option<ast::Ident>
 {
     Some(__0)
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action204<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action202<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> core::option::Option<ast::Ident>
@@ -665708,9 +706947,12 @@
     None
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action205<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action203<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> alloc::vec::Vec<ast::Ident>
@@ -665718,18 +706960,24 @@
     alloc::vec![]
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action206<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action204<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, v, _): (usize, alloc::vec::Vec<ast::Ident>, usize),
 ) -> alloc::vec::Vec<ast::Ident>
 {
     v
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action207<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action205<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Ident, usize),
     (_, _, _): (usize, Token, usize),
 ) -> ast::Ident
@@ -665737,18 +706985,24 @@
     __0
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action208<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action206<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Ident, usize),
 ) -> alloc::vec::Vec<ast::Ident>
 {
     alloc::vec![__0]
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action209<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action207<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, v, _): (usize, alloc::vec::Vec<ast::Ident>, usize),
     (_, e, _): (usize, ast::Ident, usize),
 ) -> alloc::vec::Vec<ast::Ident>
@@ -665756,18 +707010,24 @@
     { let mut v = v; v.push(e); v }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action210<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action208<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Ident, usize),
 ) -> alloc::vec::Vec<ast::Ident>
 {
     alloc::vec![__0]
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action211<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action209<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, v, _): (usize, alloc::vec::Vec<ast::Ident>, usize),
     (_, e, _): (usize, ast::Ident, usize),
 ) -> alloc::vec::Vec<ast::Ident>
@@ -665775,18 +707035,24 @@
     { let mut v = v; v.push(e); v }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action212<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action210<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::StructField, usize),
 ) -> alloc::vec::Vec<ast::StructField>
 {
     alloc::vec![__0]
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action213<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action211<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, v, _): (usize, alloc::vec::Vec<ast::StructField>, usize),
     (_, e, _): (usize, ast::StructField, usize),
 ) -> alloc::vec::Vec<ast::StructField>
@@ -665794,18 +707060,24 @@
     { let mut v = v; v.push(e); v }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action214<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action212<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::FnParam, usize),
 ) -> alloc::vec::Vec<ast::FnParam>
 {
     alloc::vec![__0]
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action215<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action213<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, v, _): (usize, alloc::vec::Vec<ast::FnParam>, usize),
     (_, e, _): (usize, ast::FnParam, usize),
 ) -> alloc::vec::Vec<ast::FnParam>
@@ -665813,18 +707085,24 @@
     { let mut v = v; v.push(e); v }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action216<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action214<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, (ast::Ident, ast::StructInitField), usize),
 ) -> alloc::vec::Vec<(ast::Ident, ast::StructInitField)>
 {
     alloc::vec![__0]
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action217<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action215<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, v, _): (usize, alloc::vec::Vec<(ast::Ident, ast::StructInitField)>, usize),
     (_, e, _): (usize, (ast::Ident, ast::StructInitField), usize),
 ) -> alloc::vec::Vec<(ast::Ident, ast::StructInitField)>
@@ -665832,18 +707110,24 @@
     { let mut v = v; v.push(e); v }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action218<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action216<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> alloc::vec::Vec<ast::Expression>
 {
     alloc::vec![__0]
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action219<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action217<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, v, _): (usize, alloc::vec::Vec<ast::Expression>, usize),
     (_, e, _): (usize, ast::Expression, usize),
 ) -> alloc::vec::Vec<ast::Expression>
@@ -665851,18 +707135,24 @@
     { let mut v = v; v.push(e); v }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action220<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action218<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, __0, _): (usize, ast::Type, usize),
 ) -> alloc::vec::Vec<ast::Type>
 {
     alloc::vec![__0]
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
-fn __action221<
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)]
+fn __action219<
+    'module_name,
 >(
+    module_name: &'module_name str,
     (_, v, _): (usize, alloc::vec::Vec<ast::Type>, usize),
     (_, e, _): (usize, ast::Type, usize),
 ) -> alloc::vec::Vec<ast::Type>
@@ -665870,10 +707160,13 @@
     { let mut v = v; v.push(e); v }
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action222<
+fn __action220<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, ast::PathExpr, usize),
     __2: (usize, Token, usize),
@@ -665883,12 +707176,14 @@
 {
     let __start0 = __0.2;
     let __end0 = __1.0;
-    let __temp0 = __action159(
+    let __temp0 = __action157(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action65(
+        module_name,
         __0,
         __temp0,
         __1,
@@ -665898,10 +707193,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action223<
+fn __action221<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, alloc::vec::Vec<Token>, usize),
     __2: (usize, ast::PathExpr, usize),
@@ -665912,11 +707210,13 @@
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action160(
+    let __temp0 = __action158(
+        module_name,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action65(
+        module_name,
         __0,
         __temp0,
         __2,
@@ -665926,10 +707226,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action224<
+fn __action222<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, ast::PathExpr, usize),
     __2: (usize, Token, usize),
@@ -665939,12 +707242,14 @@
 {
     let __start0 = __0.2;
     let __end0 = __1.0;
-    let __temp0 = __action159(
+    let __temp0 = __action157(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action66(
+        module_name,
         __0,
         __temp0,
         __1,
@@ -665954,10 +707259,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action225<
+fn __action223<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, alloc::vec::Vec<Token>, usize),
     __2: (usize, ast::PathExpr, usize),
@@ -665968,11 +707276,13 @@
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action160(
+    let __temp0 = __action158(
+        module_name,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action66(
+        module_name,
         __0,
         __temp0,
         __2,
@@ -665982,10 +707292,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action226<
+fn __action224<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
     __2: (usize, Token, usize),
@@ -665999,11 +707312,13 @@
 {
     let __start0 = __2.0;
     let __end0 = __2.2;
-    let __temp0 = __action161(
+    let __temp0 = __action159(
+        module_name,
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action63(
+        module_name,
         __0,
         __1,
         __temp0,
@@ -666016,10 +707331,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action227<
+fn __action225<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Ident, usize),
@@ -666032,12 +707350,14 @@
 {
     let __start0 = __1.2;
     let __end0 = __2.0;
-    let __temp0 = __action162(
+    let __temp0 = __action160(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action63(
+        module_name,
         __0,
         __1,
         __temp0,
@@ -666050,10 +707370,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action228<
+fn __action226<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
     __2: (usize, Token, usize),
@@ -666067,11 +707390,13 @@
 {
     let __start0 = __2.0;
     let __end0 = __2.2;
-    let __temp0 = __action161(
+    let __temp0 = __action159(
+        module_name,
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action64(
+        module_name,
         __0,
         __1,
         __temp0,
@@ -666084,10 +707409,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action229<
+fn __action227<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Ident, usize),
@@ -666100,12 +707428,14 @@
 {
     let __start0 = __1.2;
     let __end0 = __2.0;
-    let __temp0 = __action162(
+    let __temp0 = __action160(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action64(
+        module_name,
         __0,
         __1,
         __temp0,
@@ -666118,10 +707448,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action230<
+fn __action228<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
     __2: (usize, Token, usize),
@@ -666137,11 +707470,13 @@
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action151(
+    let __temp0 = __action149(
+        module_name,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action118(
+        module_name,
         __0,
         __temp0,
         __2,
@@ -666156,10 +707491,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action231<
+fn __action229<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
     __2: (usize, Token, usize),
@@ -666174,12 +707512,14 @@
 {
     let __start0 = __0.2;
     let __end0 = __1.0;
-    let __temp0 = __action152(
+    let __temp0 = __action150(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action118(
+        module_name,
         __0,
         __temp0,
         __1,
@@ -666194,10 +707534,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action232<
+fn __action230<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
     __2: (usize, Token, usize),
@@ -666212,11 +707555,13 @@
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action151(
+    let __temp0 = __action149(
+        module_name,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action119(
+        module_name,
         __0,
         __temp0,
         __2,
@@ -666230,10 +707575,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action233<
+fn __action231<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Ident, usize),
@@ -666247,12 +707595,14 @@
 {
     let __start0 = __0.2;
     let __end0 = __1.0;
-    let __temp0 = __action152(
+    let __temp0 = __action150(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action119(
+        module_name,
         __0,
         __temp0,
         __1,
@@ -666266,30 +707616,38 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action234<
+fn __action232<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Type, usize),
 ) -> core::option::Option<ast::Type>
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action149(
+    let __temp0 = __action147(
+        module_name,
         __0,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action147(
+    __action145(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action235<
+fn __action233<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
     __2: (usize, Token, usize),
@@ -666306,12 +707664,14 @@
 {
     let __start0 = __8.0;
     let __end0 = __9.2;
-    let __temp0 = __action234(
+    let __temp0 = __action232(
+        module_name,
         __8,
         __9,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action230(
+    __action228(
+        module_name,
         __0,
         __1,
         __2,
@@ -666326,10 +707686,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action236<
+fn __action234<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
     __2: (usize, Token, usize),
@@ -666344,12 +707707,14 @@
 {
     let __start0 = __7.2;
     let __end0 = __8.0;
-    let __temp0 = __action148(
+    let __temp0 = __action146(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action230(
+    __action228(
+        module_name,
         __0,
         __1,
         __2,
@@ -666364,10 +707729,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action237<
+fn __action235<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
     __2: (usize, Token, usize),
@@ -666383,12 +707751,14 @@
 {
     let __start0 = __7.0;
     let __end0 = __8.2;
-    let __temp0 = __action234(
+    let __temp0 = __action232(
+        module_name,
         __7,
         __8,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action231(
+    __action229(
+        module_name,
         __0,
         __1,
         __2,
@@ -666402,10 +707772,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action238<
+fn __action236<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
     __2: (usize, Token, usize),
@@ -666419,12 +707792,14 @@
 {
     let __start0 = __6.2;
     let __end0 = __7.0;
-    let __temp0 = __action148(
+    let __temp0 = __action146(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action231(
+    __action229(
+        module_name,
         __0,
         __1,
         __2,
@@ -666438,10 +707813,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action239<
+fn __action237<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
     __2: (usize, Token, usize),
@@ -666457,12 +707835,14 @@
 {
     let __start0 = __7.0;
     let __end0 = __8.2;
-    let __temp0 = __action234(
+    let __temp0 = __action232(
+        module_name,
         __7,
         __8,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action232(
+    __action230(
+        module_name,
         __0,
         __1,
         __2,
@@ -666476,10 +707856,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action240<
+fn __action238<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
     __2: (usize, Token, usize),
@@ -666493,12 +707876,14 @@
 {
     let __start0 = __6.2;
     let __end0 = __7.0;
-    let __temp0 = __action148(
+    let __temp0 = __action146(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action232(
+    __action230(
+        module_name,
         __0,
         __1,
         __2,
@@ -666512,10 +707897,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action241<
+fn __action239<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Ident, usize),
@@ -666530,12 +707918,14 @@
 {
     let __start0 = __6.0;
     let __end0 = __7.2;
-    let __temp0 = __action234(
+    let __temp0 = __action232(
+        module_name,
         __6,
         __7,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action233(
+    __action231(
+        module_name,
         __0,
         __1,
         __2,
@@ -666548,10 +707938,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action242<
+fn __action240<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Ident, usize),
@@ -666564,12 +707957,14 @@
 {
     let __start0 = __5.2;
     let __end0 = __6.0;
-    let __temp0 = __action148(
+    let __temp0 = __action146(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action233(
+    __action231(
+        module_name,
         __0,
         __1,
         __2,
@@ -666582,10 +707977,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action243<
+fn __action241<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Vec<ast::Type>, usize),
     __2: (usize, Token, usize),
@@ -666593,21 +707991,26 @@
 {
     let __start0 = __0.0;
     let __end0 = __2.2;
-    let __temp0 = __action146(
+    let __temp0 = __action144(
+        module_name,
         __0,
         __1,
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action144(
+    __action142(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action244<
+fn __action242<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Ident, usize),
@@ -666622,13 +708025,15 @@
 {
     let __start0 = __3.0;
     let __end0 = __5.2;
-    let __temp0 = __action243(
+    let __temp0 = __action241(
+        module_name,
         __3,
         __4,
         __5,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action122(
+        module_name,
         __0,
         __1,
         __2,
@@ -666640,10 +708045,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action245<
+fn __action243<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Ident, usize),
@@ -666655,12 +708063,14 @@
 {
     let __start0 = __2.2;
     let __end0 = __3.0;
-    let __temp0 = __action145(
+    let __temp0 = __action143(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action122(
+        module_name,
         __0,
         __1,
         __2,
@@ -666672,30 +708082,38 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action246<
+fn __action244<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Block, usize),
 ) -> core::option::Option<ast::Block>
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action156(
+    let __temp0 = __action154(
+        module_name,
         __0,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action154(
+    __action152(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action247<
+fn __action245<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Expression, usize),
@@ -666707,12 +708125,14 @@
 {
     let __start0 = __4.0;
     let __end0 = __5.2;
-    let __temp0 = __action246(
+    let __temp0 = __action244(
+        module_name,
         __4,
         __5,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action71(
+        module_name,
         __0,
         __1,
         __2,
@@ -666722,10 +708142,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action248<
+fn __action246<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Expression, usize),
@@ -666735,12 +708158,14 @@
 {
     let __start0 = __3.2;
     let __end0 = __4.0;
-    let __temp0 = __action155(
+    let __temp0 = __action153(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action71(
+        module_name,
         __0,
         __1,
         __2,
@@ -666750,10 +708175,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action249<
+fn __action247<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Vec<ast::Ident>, usize),
     __2: (usize, Token, usize),
@@ -666761,21 +708189,26 @@
 {
     let __start0 = __0.0;
     let __end0 = __2.2;
-    let __temp0 = __action140(
+    let __temp0 = __action138(
+        module_name,
         __0,
         __1,
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action138(
+    __action136(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action250<
+fn __action248<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
     __2: (usize, Vec<ast::Ident>, usize),
@@ -666788,13 +708221,15 @@
 {
     let __start0 = __3.0;
     let __end0 = __5.2;
-    let __temp0 = __action249(
+    let __temp0 = __action247(
+        module_name,
         __3,
         __4,
         __5,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action123(
+        module_name,
         __0,
         __1,
         __2,
@@ -666804,10 +708239,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action251<
+fn __action249<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
     __2: (usize, Vec<ast::Ident>, usize),
@@ -666817,12 +708255,14 @@
 {
     let __start0 = __2.2;
     let __end0 = __3.0;
-    let __temp0 = __action139(
+    let __temp0 = __action137(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action123(
+        module_name,
         __0,
         __1,
         __2,
@@ -666832,30 +708272,38 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action252<
+fn __action250<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Expression, usize),
     __1: (usize, Token, usize),
 ) -> alloc::vec::Vec<ast::Expression>
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action182(
+    let __temp0 = __action180(
+        module_name,
         __0,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action218(
+    __action216(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action253<
+fn __action251<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, alloc::vec::Vec<ast::Expression>, usize),
     __1: (usize, ast::Expression, usize),
     __2: (usize, Token, usize),
@@ -666863,81 +708311,101 @@
 {
     let __start0 = __1.0;
     let __end0 = __2.2;
-    let __temp0 = __action182(
+    let __temp0 = __action180(
+        module_name,
         __1,
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action219(
+    __action217(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action254<
+fn __action252<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, core::option::Option<ast::Expression>, usize),
 ) -> Vec<ast::Expression>
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action180(
+    let __temp0 = __action178(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action163(
+    __action161(
+        module_name,
         __temp0,
         __0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action255<
+fn __action253<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __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 = __action181(
+    let __temp0 = __action179(
+        module_name,
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action163(
+    __action161(
+        module_name,
         __temp0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action256<
+fn __action254<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::FnParam, usize),
     __1: (usize, Token, usize),
 ) -> alloc::vec::Vec<ast::FnParam>
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action194(
+    let __temp0 = __action192(
+        module_name,
         __0,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action214(
+    __action212(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action257<
+fn __action255<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, alloc::vec::Vec<ast::FnParam>, usize),
     __1: (usize, ast::FnParam, usize),
     __2: (usize, Token, usize),
@@ -666945,81 +708413,101 @@
 {
     let __start0 = __1.0;
     let __end0 = __2.2;
-    let __temp0 = __action194(
+    let __temp0 = __action192(
+        module_name,
         __1,
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action215(
+    __action213(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action258<
+fn __action256<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, core::option::Option<ast::FnParam>, usize),
 ) -> Vec<ast::FnParam>
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action192(
+    let __temp0 = __action190(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action150(
+    __action148(
+        module_name,
         __temp0,
         __0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action259<
+fn __action257<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __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 = __action193(
+    let __temp0 = __action191(
+        module_name,
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action150(
+    __action148(
+        module_name,
         __temp0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action260<
+fn __action258<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
 ) -> alloc::vec::Vec<ast::Ident>
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action207(
+    let __temp0 = __action205(
+        module_name,
         __0,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action208(
+    __action206(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action261<
+fn __action259<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, alloc::vec::Vec<ast::Ident>, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -667027,81 +708515,101 @@
 {
     let __start0 = __1.0;
     let __end0 = __2.2;
-    let __temp0 = __action207(
+    let __temp0 = __action205(
+        module_name,
         __1,
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action209(
+    __action207(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action262<
+fn __action260<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, core::option::Option<ast::Ident>, usize),
 ) -> Vec<ast::Ident>
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action205(
+    let __temp0 = __action203(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action141(
+    __action139(
+        module_name,
         __temp0,
         __0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action263<
+fn __action261<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __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 = __action206(
+    let __temp0 = __action204(
+        module_name,
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action141(
+    __action139(
+        module_name,
         __temp0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action264<
+fn __action262<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
 ) -> alloc::vec::Vec<ast::Ident>
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action202(
+    let __temp0 = __action200(
+        module_name,
         __0,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action210(
+    __action208(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action265<
+fn __action263<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, alloc::vec::Vec<ast::Ident>, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -667109,81 +708617,101 @@
 {
     let __start0 = __1.0;
     let __end0 = __2.2;
-    let __temp0 = __action202(
+    let __temp0 = __action200(
+        module_name,
         __1,
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action211(
+    __action209(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action266<
+fn __action264<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, core::option::Option<ast::Ident>, usize),
 ) -> Vec<ast::Ident>
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action200(
+    let __temp0 = __action198(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action142(
+    __action140(
+        module_name,
         __temp0,
         __0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action267<
+fn __action265<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __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 = __action201(
+    let __temp0 = __action199(
+        module_name,
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action142(
+    __action140(
+        module_name,
         __temp0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action268<
+fn __action266<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::StructField, usize),
     __1: (usize, Token, usize),
 ) -> alloc::vec::Vec<ast::StructField>
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action199(
+    let __temp0 = __action197(
+        module_name,
         __0,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action212(
+    __action210(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action269<
+fn __action267<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, alloc::vec::Vec<ast::StructField>, usize),
     __1: (usize, ast::StructField, usize),
     __2: (usize, Token, usize),
@@ -667191,81 +708719,101 @@
 {
     let __start0 = __1.0;
     let __end0 = __2.2;
-    let __temp0 = __action199(
+    let __temp0 = __action197(
+        module_name,
         __1,
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action213(
+    __action211(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action270<
+fn __action268<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, core::option::Option<ast::StructField>, usize),
 ) -> Vec<ast::StructField>
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action197(
+    let __temp0 = __action195(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action143(
+    __action141(
+        module_name,
         __temp0,
         __0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action271<
+fn __action269<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __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 = __action198(
+    let __temp0 = __action196(
+        module_name,
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action143(
+    __action141(
+        module_name,
         __temp0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action272<
+fn __action270<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, (ast::Ident, ast::StructInitField), usize),
     __1: (usize, Token, usize),
 ) -> alloc::vec::Vec<(ast::Ident, ast::StructInitField)>
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action189(
+    let __temp0 = __action187(
+        module_name,
         __0,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action216(
+    __action214(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action273<
+fn __action271<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, alloc::vec::Vec<(ast::Ident, ast::StructInitField)>, usize),
     __1: (usize, (ast::Ident, ast::StructInitField), usize),
     __2: (usize, Token, usize),
@@ -667273,81 +708821,101 @@
 {
     let __start0 = __1.0;
     let __end0 = __2.2;
-    let __temp0 = __action189(
+    let __temp0 = __action187(
+        module_name,
         __1,
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action217(
+    __action215(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action274<
+fn __action272<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __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 = __action187(
+    let __temp0 = __action185(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action153(
+    __action151(
+        module_name,
         __temp0,
         __0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action275<
+fn __action273<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __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 = __action188(
+    let __temp0 = __action186(
+        module_name,
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action153(
+    __action151(
+        module_name,
         __temp0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action276<
+fn __action274<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Type, usize),
     __1: (usize, Token, usize),
 ) -> alloc::vec::Vec<ast::Type>
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action179(
+    let __temp0 = __action177(
+        module_name,
         __0,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action220(
+    __action218(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action277<
+fn __action275<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, alloc::vec::Vec<ast::Type>, usize),
     __1: (usize, ast::Type, usize),
     __2: (usize, Token, usize),
@@ -667355,61 +708923,76 @@
 {
     let __start0 = __1.0;
     let __end0 = __2.2;
-    let __temp0 = __action179(
+    let __temp0 = __action177(
+        module_name,
         __1,
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action221(
+    __action219(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action278<
+fn __action276<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, core::option::Option<ast::Type>, usize),
 ) -> Vec<ast::Type>
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action177(
+    let __temp0 = __action175(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action168(
+    __action166(
+        module_name,
         __temp0,
         __0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action279<
+fn __action277<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __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 = __action178(
+    let __temp0 = __action176(
+        module_name,
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action168(
+    __action166(
+        module_name,
         __temp0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action280<
+fn __action278<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::PathExpr, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Expression, usize),
@@ -667418,12 +709001,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action222(
+    __action220(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -667432,10 +709017,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action281<
+fn __action279<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, alloc::vec::Vec<Token>, usize),
     __1: (usize, ast::PathExpr, usize),
     __2: (usize, Token, usize),
@@ -667445,12 +709033,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action223(
+    __action221(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -667460,10 +709050,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action282<
+fn __action280<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::PathExpr, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::StructInitExpr, usize),
@@ -667472,12 +709065,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action224(
+    __action222(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -667486,10 +709081,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action283<
+fn __action281<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, alloc::vec::Vec<Token>, usize),
     __1: (usize, ast::PathExpr, usize),
     __2: (usize, Token, usize),
@@ -667499,12 +709097,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action225(
+    __action223(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -667514,362 +709114,445 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action284<
+fn __action282<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action91(
+        module_name,
         __temp0,
         __0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action285<
+fn __action283<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action92(
+        module_name,
         __temp0,
         __0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action286<
+fn __action284<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action93(
+        module_name,
         __temp0,
         __0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action287<
+fn __action285<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action94(
+        module_name,
         __temp0,
         __0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action288<
+fn __action286<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action95(
+        module_name,
         __temp0,
         __0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action289<
+fn __action287<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action96(
+        module_name,
         __temp0,
         __0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action290<
+fn __action288<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action97(
+        module_name,
         __temp0,
         __0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action291<
+fn __action289<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action98(
+        module_name,
         __temp0,
         __0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action292<
+fn __action290<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action99(
+        module_name,
         __temp0,
         __0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action293<
+fn __action291<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action100(
+        module_name,
         __temp0,
         __0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action294<
+fn __action292<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action101(
+        module_name,
         __temp0,
         __0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action295<
+fn __action293<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action102(
+        module_name,
         __temp0,
         __0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action296<
+fn __action294<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action103(
+        module_name,
         __temp0,
         __0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action297<
+fn __action295<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action104(
+        module_name,
         __temp0,
         __0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action298<
+fn __action296<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action105(
+        module_name,
         __temp0,
         __0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action299<
+fn __action297<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action106(
+        module_name,
         __temp0,
         __0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action300<
+fn __action298<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Vec<ast::Statement>, usize),
     __2: (usize, Token, usize),
@@ -667878,12 +709561,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action54(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -667892,10 +709577,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action301<
+fn __action299<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -667908,12 +709596,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action120(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -667926,10 +709616,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action302<
+fn __action300<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Expression, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Type, usize),
@@ -667938,12 +709631,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action88(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -667952,10 +709647,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action303<
+fn __action301<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Expression, usize),
@@ -667964,12 +709662,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action77(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -667978,10 +709678,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action304<
+fn __action302<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Expression, usize),
     __2: (usize, usize, usize),
@@ -667989,12 +709692,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action78(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668002,10 +709707,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action305<
+fn __action303<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Expression, usize),
     __2: (usize, usize, usize),
@@ -668013,12 +709721,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action79(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668026,10 +709736,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action306<
+fn __action304<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
     __2: (usize, Vec<ast::Expression>, usize),
@@ -668039,12 +709752,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action62(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668054,10 +709769,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action307<
+fn __action305<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Type, usize),
@@ -668066,12 +709784,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action117(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668080,10 +709800,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action308<
+fn __action306<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -668094,12 +709817,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action69(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668110,10 +709835,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action309<
+fn __action307<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -668126,12 +709854,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action70(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668144,10 +709874,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action310<
+fn __action308<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
     __2: (usize, Token, usize),
@@ -668163,12 +709896,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action235(
+    __action233(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668184,10 +709919,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action311<
+fn __action309<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
     __2: (usize, Token, usize),
@@ -668201,12 +709939,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action236(
+    __action234(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668220,10 +709960,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action312<
+fn __action310<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Ident, usize),
@@ -668238,12 +709981,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action237(
+    __action235(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668258,10 +710003,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action313<
+fn __action311<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Ident, usize),
@@ -668274,12 +710022,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action238(
+    __action236(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668292,10 +710042,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action314<
+fn __action312<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Ident, usize),
@@ -668310,12 +710063,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action239(
+    __action237(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668330,10 +710085,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action315<
+fn __action313<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Ident, usize),
@@ -668346,12 +710104,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action240(
+    __action238(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668364,10 +710124,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action316<
+fn __action314<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -668381,12 +710144,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action241(
+    __action239(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668400,10 +710165,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action317<
+fn __action315<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -668415,12 +710183,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action242(
+    __action240(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668432,54 +710202,67 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action318<
+fn __action316<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, String, usize),
     __1: (usize, usize, usize),
 ) -> ast::Ident
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action40(
+        module_name,
         __temp0,
         __0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action319<
+fn __action317<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Ident, usize),
     __1: (usize, usize, usize),
 ) -> ast::Type
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action47(
+        module_name,
         __temp0,
         __0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action320<
+fn __action318<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
     __2: (usize, Token, usize),
@@ -668490,12 +710273,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action48(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668506,10 +710291,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action321<
+fn __action319<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Expression, usize),
     __2: (usize, ast::Block, usize),
@@ -668520,12 +710308,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action247(
+    __action245(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668536,10 +710326,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action322<
+fn __action320<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Expression, usize),
     __2: (usize, ast::Block, usize),
@@ -668548,12 +710341,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action248(
+    __action246(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668562,10 +710357,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action323<
+fn __action321<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Vec<ast::Ident>, usize),
     __2: (usize, Token, usize),
@@ -668577,12 +710375,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action250(
+    __action248(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668594,10 +710394,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action324<
+fn __action322<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Vec<ast::Ident>, usize),
     __2: (usize, Token, usize),
@@ -668606,12 +710409,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action251(
+    __action249(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668620,10 +710425,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action325<
+fn __action323<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Ident, usize),
@@ -668636,12 +710444,90 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action224(
+        module_name,
+        __temp0,
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+        __6,
+        __7,
+    )
+}
+
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+    clippy::just_underscores_and_digits)]
+fn __action324<
+    'module_name,
+>(
+    module_name: &'module_name str,
+    __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(
+        module_name,
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action225(
+        module_name,
+        __temp0,
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+        __6,
+    )
+}
+
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+    clippy::just_underscores_and_digits)]
+fn __action325<
+    'module_name,
+>(
+    module_name: &'module_name str,
+    __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(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action226(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668654,27 +710540,32 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action326<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __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),
+    __5: (usize, ast::StructInitExpr, usize),
     __6: (usize, usize, usize),
 ) -> ast::LetStmt
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action227(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668686,76 +710577,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action327<
+    'module_name,
 >(
-    __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 = __action172(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action228(
-        __temp0,
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __6,
-        __7,
-    )
-}
-
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
-    clippy::just_underscores_and_digits)]
-fn __action328<
->(
-    __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 = __action172(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action229(
-        __temp0,
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __6,
-    )
-}
-
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
-    clippy::just_underscores_and_digits)]
-fn __action329<
->(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -668767,12 +710595,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action125(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668784,10 +710614,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action330<
+fn __action328<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Ident, usize),
     __1: (usize, core::option::Option<Vec<ast::PathSegment>>, usize),
     __2: (usize, usize, usize),
@@ -668795,12 +710628,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action49(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668808,10 +710643,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action331<
+fn __action329<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Expression, usize),
     __2: (usize, Token, usize),
@@ -668820,12 +710658,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action53(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668834,10 +710674,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action332<
+fn __action330<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, core::option::Option<ast::Expression>, usize),
     __2: (usize, usize, usize),
@@ -668845,12 +710688,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action67(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668858,10 +710703,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action333<
+fn __action331<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -668875,12 +710723,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action244(
+    __action242(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668894,10 +710744,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action334<
+fn __action332<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -668908,12 +710761,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action245(
+    __action243(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668924,10 +710779,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action335<
+fn __action333<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Type, usize),
@@ -668936,12 +710794,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action121(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668950,10 +710810,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action336<
+fn __action334<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Type, usize),
     __1: (usize, Token, usize),
     __2: (usize, Vec<(ast::Ident, ast::StructInitField)>, usize),
@@ -668963,12 +710826,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action116(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -668978,10 +710843,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action337<
+fn __action335<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Expression, usize),
@@ -668990,12 +710858,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action114(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -669004,10 +710874,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action338<
+fn __action336<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::StructInitExpr, usize),
@@ -669016,12 +710889,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action115(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -669030,10 +710905,42 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action339<
+fn __action337<
+    'module_name,
 >(
+    module_name: &'module_name str,
+    __0: (usize, core::option::Option<Vec<ast::Import>>, usize),
+    __1: (usize, Vec<ast::ModuleStatement>, usize),
+    __2: (usize, usize, usize),
+) -> ast::Module
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
+        module_name,
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action124(
+        module_name,
+        __temp0,
+        __0,
+        __1,
+        __2,
+    )
+}
+
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+    clippy::just_underscores_and_digits)]
+fn __action338<
+    'module_name,
+>(
+    module_name: &'module_name str,
     __0: (usize, alloc::vec::Vec<ast::TypeQualifier>, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, usize, usize),
@@ -669041,12 +710948,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action45(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -669054,10 +710963,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action340<
+fn __action339<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, alloc::vec::Vec<ast::TypeQualifier>, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -669068,12 +710980,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action46(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -669084,142 +710998,175 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action341<
+fn __action340<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
 ) -> ast::UnaryOp
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action107(
+        module_name,
         __temp0,
         __0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action342<
+fn __action341<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
 ) -> ast::UnaryOp
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action108(
+        module_name,
         __temp0,
         __0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action343<
+fn __action342<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
 ) -> ast::UnaryOp
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action109(
+        module_name,
         __temp0,
         __0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action344<
+fn __action343<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, u128, usize),
     __1: (usize, usize, usize),
 ) -> ast::ValueExpr
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action110(
+        module_name,
         __temp0,
         __0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action345<
+fn __action344<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, bool, usize),
     __1: (usize, usize, usize),
 ) -> ast::ValueExpr
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action111(
+        module_name,
         __temp0,
         __0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action346<
+fn __action345<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, String, usize),
     __1: (usize, usize, usize),
 ) -> ast::ValueExpr
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action112(
+        module_name,
         __temp0,
         __0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action347<
+fn __action346<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Expression, usize),
     __2: (usize, ast::Block, usize),
@@ -669228,12 +711175,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action172(
+    let __temp0 = __action170(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action68(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -669242,10 +711191,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action348<
+fn __action347<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::PathExpr, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Expression, usize),
@@ -669253,12 +711205,14 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action280(
+    __action278(
+        module_name,
         __0,
         __1,
         __2,
@@ -669266,10 +711220,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action349<
+fn __action348<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, alloc::vec::Vec<Token>, usize),
     __1: (usize, ast::PathExpr, usize),
     __2: (usize, Token, usize),
@@ -669278,12 +711235,14 @@
 {
     let __start0 = __3.2;
     let __end0 = __3.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action281(
+    __action279(
+        module_name,
         __0,
         __1,
         __2,
@@ -669292,10 +711251,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action350<
+fn __action349<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::PathExpr, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::StructInitExpr, usize),
@@ -669303,12 +711265,14 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action282(
+    __action280(
+        module_name,
         __0,
         __1,
         __2,
@@ -669316,10 +711280,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action351<
+fn __action350<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, alloc::vec::Vec<Token>, usize),
     __1: (usize, ast::PathExpr, usize),
     __2: (usize, Token, usize),
@@ -669328,12 +711295,14 @@
 {
     let __start0 = __3.2;
     let __end0 = __3.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action283(
+    __action281(
+        module_name,
         __0,
         __1,
         __2,
@@ -669342,330 +711311,413 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action352<
+fn __action351<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action284(
+    __action282(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action353<
+fn __action352<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action285(
+    __action283(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action354<
+fn __action353<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action286(
+    __action284(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action355<
+fn __action354<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action287(
+    __action285(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action356<
+fn __action355<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action288(
+    __action286(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action357<
+fn __action356<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action289(
+    __action287(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action358<
+fn __action357<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action290(
+    __action288(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action359<
+fn __action358<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action291(
+    __action289(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action360<
+fn __action359<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action292(
+    __action290(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action361<
+fn __action360<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action293(
+    __action291(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action362<
+fn __action361<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action294(
+    __action292(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action363<
+fn __action362<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action295(
+    __action293(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action364<
+fn __action363<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action296(
+    __action294(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action365<
+fn __action364<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action297(
+    __action295(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action366<
+fn __action365<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action298(
+    __action296(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action367<
+fn __action366<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action299(
+    __action297(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action368<
+fn __action367<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Vec<ast::Statement>, usize),
     __2: (usize, Token, usize),
@@ -669673,12 +711725,14 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action300(
+    __action298(
+        module_name,
         __0,
         __1,
         __2,
@@ -669686,10 +711740,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action369<
+fn __action368<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -669701,12 +711758,14 @@
 {
     let __start0 = __6.2;
     let __end0 = __6.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action301(
+    __action299(
+        module_name,
         __0,
         __1,
         __2,
@@ -669718,10 +711777,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action370<
+fn __action369<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Expression, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Type, usize),
@@ -669729,12 +711791,14 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action302(
+    __action300(
+        module_name,
         __0,
         __1,
         __2,
@@ -669742,10 +711806,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action371<
+fn __action370<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Expression, usize),
@@ -669753,12 +711820,14 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action303(
+    __action301(
+        module_name,
         __0,
         __1,
         __2,
@@ -669766,54 +711835,67 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action372<
+fn __action371<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Expression, usize),
 ) -> ast::Expression
 {
     let __start0 = __1.2;
     let __end0 = __1.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action304(
+    __action302(
+        module_name,
         __0,
         __1,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action373<
+fn __action372<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Expression, usize),
 ) -> ast::Expression
 {
     let __start0 = __1.2;
     let __end0 = __1.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action305(
+    __action303(
+        module_name,
         __0,
         __1,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action374<
+fn __action373<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
     __2: (usize, Vec<ast::Expression>, usize),
@@ -669822,12 +711904,14 @@
 {
     let __start0 = __3.2;
     let __end0 = __3.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action306(
+    __action304(
+        module_name,
         __0,
         __1,
         __2,
@@ -669836,10 +711920,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action375<
+fn __action374<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Type, usize),
@@ -669847,12 +711934,14 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action307(
+    __action305(
+        module_name,
         __0,
         __1,
         __2,
@@ -669860,10 +711949,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action376<
+fn __action375<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -669873,12 +711965,14 @@
 {
     let __start0 = __4.2;
     let __end0 = __4.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action308(
+    __action306(
+        module_name,
         __0,
         __1,
         __2,
@@ -669888,10 +711982,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action377<
+fn __action376<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -669903,12 +712000,14 @@
 {
     let __start0 = __6.2;
     let __end0 = __6.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action309(
+    __action307(
+        module_name,
         __0,
         __1,
         __2,
@@ -669920,10 +712019,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action378<
+fn __action377<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
     __2: (usize, Token, usize),
@@ -669938,12 +712040,14 @@
 {
     let __start0 = __9.2;
     let __end0 = __9.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action310(
+    __action308(
+        module_name,
         __0,
         __1,
         __2,
@@ -669958,10 +712062,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action379<
+fn __action378<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
     __2: (usize, Token, usize),
@@ -669974,12 +712081,14 @@
 {
     let __start0 = __7.2;
     let __end0 = __7.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action311(
+    __action309(
+        module_name,
         __0,
         __1,
         __2,
@@ -669992,10 +712101,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action380<
+fn __action379<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Ident, usize),
@@ -670009,12 +712121,14 @@
 {
     let __start0 = __8.2;
     let __end0 = __8.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action312(
+    __action310(
+        module_name,
         __0,
         __1,
         __2,
@@ -670028,10 +712142,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action381<
+fn __action380<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Ident, usize),
@@ -670043,12 +712160,14 @@
 {
     let __start0 = __6.2;
     let __end0 = __6.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action313(
+    __action311(
+        module_name,
         __0,
         __1,
         __2,
@@ -670060,10 +712179,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action382<
+fn __action381<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Ident, usize),
@@ -670077,12 +712199,14 @@
 {
     let __start0 = __8.2;
     let __end0 = __8.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action314(
+    __action312(
+        module_name,
         __0,
         __1,
         __2,
@@ -670096,10 +712220,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action383<
+fn __action382<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Ident, usize),
@@ -670111,12 +712238,14 @@
 {
     let __start0 = __6.2;
     let __end0 = __6.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action315(
+    __action313(
+        module_name,
         __0,
         __1,
         __2,
@@ -670128,10 +712257,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action384<
+fn __action383<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -670144,12 +712276,14 @@
 {
     let __start0 = __7.2;
     let __end0 = __7.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action316(
+    __action314(
+        module_name,
         __0,
         __1,
         __2,
@@ -670162,10 +712296,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action385<
+fn __action384<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -670176,12 +712313,14 @@
 {
     let __start0 = __5.2;
     let __end0 = __5.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action317(
+    __action315(
+        module_name,
         __0,
         __1,
         __2,
@@ -670192,50 +712331,63 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action386<
+fn __action385<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, String, usize),
 ) -> ast::Ident
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action318(
+    __action316(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action387<
+fn __action386<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Ident, usize),
 ) -> ast::Type
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action319(
+    __action317(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action388<
+fn __action387<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
     __2: (usize, Token, usize),
@@ -670245,12 +712397,14 @@
 {
     let __start0 = __4.2;
     let __end0 = __4.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action320(
+    __action318(
+        module_name,
         __0,
         __1,
         __2,
@@ -670260,10 +712414,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action389<
+fn __action388<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Expression, usize),
     __2: (usize, ast::Block, usize),
@@ -670273,12 +712430,14 @@
 {
     let __start0 = __4.2;
     let __end0 = __4.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action321(
+    __action319(
+        module_name,
         __0,
         __1,
         __2,
@@ -670288,10 +712447,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action390<
+fn __action389<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Expression, usize),
     __2: (usize, ast::Block, usize),
@@ -670299,12 +712461,14 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action322(
+    __action320(
+        module_name,
         __0,
         __1,
         __2,
@@ -670312,10 +712476,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action391<
+fn __action390<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Vec<ast::Ident>, usize),
     __2: (usize, Token, usize),
@@ -670326,12 +712493,14 @@
 {
     let __start0 = __5.2;
     let __end0 = __5.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action323(
+    __action321(
+        module_name,
         __0,
         __1,
         __2,
@@ -670342,10 +712511,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action392<
+fn __action391<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Vec<ast::Ident>, usize),
     __2: (usize, Token, usize),
@@ -670353,12 +712525,14 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action324(
+    __action322(
+        module_name,
         __0,
         __1,
         __2,
@@ -670366,10 +712540,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action393<
+fn __action392<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Ident, usize),
@@ -670381,12 +712558,14 @@
 {
     let __start0 = __6.2;
     let __end0 = __6.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action325(
+    __action323(
+        module_name,
         __0,
         __1,
         __2,
@@ -670398,10 +712577,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action394<
+fn __action393<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -670412,12 +712594,14 @@
 {
     let __start0 = __5.2;
     let __end0 = __5.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action326(
+    __action324(
+        module_name,
         __0,
         __1,
         __2,
@@ -670428,10 +712612,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action395<
+fn __action394<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Ident, usize),
@@ -670443,12 +712630,14 @@
 {
     let __start0 = __6.2;
     let __end0 = __6.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action327(
+    __action325(
+        module_name,
         __0,
         __1,
         __2,
@@ -670460,10 +712649,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action396<
+fn __action395<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -670474,12 +712666,14 @@
 {
     let __start0 = __5.2;
     let __end0 = __5.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action328(
+    __action326(
+        module_name,
         __0,
         __1,
         __2,
@@ -670490,10 +712684,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action397<
+fn __action396<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -670504,12 +712701,14 @@
 {
     let __start0 = __5.2;
     let __end0 = __5.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action329(
+    __action327(
+        module_name,
         __0,
         __1,
         __2,
@@ -670520,32 +712719,40 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action398<
+fn __action397<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __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 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action330(
+    __action328(
+        module_name,
         __0,
         __1,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action399<
+fn __action398<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Expression, usize),
     __2: (usize, Token, usize),
@@ -670553,12 +712760,14 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action331(
+    __action329(
+        module_name,
         __0,
         __1,
         __2,
@@ -670566,32 +712775,40 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action400<
+fn __action399<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, core::option::Option<ast::Expression>, usize),
 ) -> ast::ReturnStmt
 {
     let __start0 = __1.2;
     let __end0 = __1.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action332(
+    __action330(
+        module_name,
         __0,
         __1,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action401<
+fn __action400<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -670604,12 +712821,14 @@
 {
     let __start0 = __7.2;
     let __end0 = __7.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action333(
+    __action331(
+        module_name,
         __0,
         __1,
         __2,
@@ -670622,10 +712841,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action402<
+fn __action401<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -670635,12 +712857,14 @@
 {
     let __start0 = __4.2;
     let __end0 = __4.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action334(
+    __action332(
+        module_name,
         __0,
         __1,
         __2,
@@ -670650,10 +712874,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action403<
+fn __action402<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Type, usize),
@@ -670661,12 +712888,14 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action335(
+    __action333(
+        module_name,
         __0,
         __1,
         __2,
@@ -670674,10 +712903,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action404<
+fn __action403<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Type, usize),
     __1: (usize, Token, usize),
     __2: (usize, Vec<(ast::Ident, ast::StructInitField)>, usize),
@@ -670686,12 +712918,14 @@
 {
     let __start0 = __3.2;
     let __end0 = __3.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action336(
+    __action334(
+        module_name,
         __0,
         __1,
         __2,
@@ -670700,10 +712934,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action405<
+fn __action404<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Expression, usize),
@@ -670711,12 +712948,14 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action337(
+    __action335(
+        module_name,
         __0,
         __1,
         __2,
@@ -670724,10 +712963,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action406<
+fn __action405<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::StructInitExpr, usize),
@@ -670735,12 +712977,14 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action338(
+    __action336(
+        module_name,
         __0,
         __1,
         __2,
@@ -670748,32 +712992,67 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+    clippy::just_underscores_and_digits)]
+fn __action406<
+    'module_name,
+>(
+    module_name: &'module_name str,
+    __0: (usize, core::option::Option<Vec<ast::Import>>, usize),
+    __1: (usize, Vec<ast::ModuleStatement>, usize),
+) -> ast::Module
+{
+    let __start0 = __1.2;
+    let __end0 = __1.2;
+    let __temp0 = __action169(
+        module_name,
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action337(
+        module_name,
+        __0,
+        __1,
+        __temp0,
+    )
+}
+
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action407<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __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 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action339(
+    __action338(
+        module_name,
         __0,
         __1,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action408<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, alloc::vec::Vec<ast::TypeQualifier>, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -670783,12 +713062,14 @@
 {
     let __start0 = __4.2;
     let __end0 = __4.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action340(
+    __action339(
+        module_name,
         __0,
         __1,
         __2,
@@ -670798,130 +713079,163 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action409<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
 ) -> ast::UnaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action341(
+    __action340(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action410<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
 ) -> ast::UnaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action342(
+    __action341(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action411<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
 ) -> ast::UnaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action343(
+    __action342(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action412<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, u128, usize),
 ) -> ast::ValueExpr
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action344(
+    __action343(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action413<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, bool, usize),
 ) -> ast::ValueExpr
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action345(
+    __action344(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action414<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, String, usize),
 ) -> ast::ValueExpr
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action346(
+    __action345(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action415<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Expression, usize),
     __2: (usize, ast::Block, usize),
@@ -670929,12 +713243,14 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action171(
+    let __temp0 = __action169(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action347(
+    __action346(
+        module_name,
         __0,
         __1,
         __2,
@@ -670942,362 +713258,455 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action416<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Expression, usize),
 ) -> Vec<ast::Expression>
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action157(
+    let __temp0 = __action155(
+        module_name,
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action254(
+    __action252(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action417<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> Vec<ast::Expression>
 {
     let __start0 = *__lookbehind;
     let __end0 = *__lookahead;
-    let __temp0 = __action158(
+    let __temp0 = __action156(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action254(
+    __action252(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action418<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, alloc::vec::Vec<ast::Expression>, usize),
     __1: (usize, ast::Expression, usize),
 ) -> Vec<ast::Expression>
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action157(
+    let __temp0 = __action155(
+        module_name,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action255(
+    __action253(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action419<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, alloc::vec::Vec<ast::Expression>, usize),
 ) -> Vec<ast::Expression>
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action158(
+    let __temp0 = __action156(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action255(
+    __action253(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action420<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Expression, usize),
 ) -> ast::ReturnStmt
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action157(
+    let __temp0 = __action155(
+        module_name,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action400(
+    __action399(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action421<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
 ) -> ast::ReturnStmt
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action158(
+    let __temp0 = __action156(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action400(
+    __action399(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action422<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::FnParam, usize),
 ) -> Vec<ast::FnParam>
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action190(
+    let __temp0 = __action188(
+        module_name,
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action258(
+    __action256(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action423<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> Vec<ast::FnParam>
 {
     let __start0 = *__lookbehind;
     let __end0 = *__lookahead;
-    let __temp0 = __action191(
+    let __temp0 = __action189(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action258(
+    __action256(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action424<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __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 = __action190(
+    let __temp0 = __action188(
+        module_name,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action259(
+    __action257(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action425<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, alloc::vec::Vec<ast::FnParam>, usize),
 ) -> Vec<ast::FnParam>
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action191(
+    let __temp0 = __action189(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action259(
+    __action257(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action426<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Ident, usize),
 ) -> Vec<ast::Ident>
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action203(
+    let __temp0 = __action201(
+        module_name,
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action262(
+    __action260(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action427<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> Vec<ast::Ident>
 {
     let __start0 = *__lookbehind;
     let __end0 = *__lookahead;
-    let __temp0 = __action204(
+    let __temp0 = __action202(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action262(
+    __action260(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action428<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __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 = __action203(
+    let __temp0 = __action201(
+        module_name,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action263(
+    __action261(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action429<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, alloc::vec::Vec<ast::Ident>, usize),
 ) -> Vec<ast::Ident>
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action204(
+    let __temp0 = __action202(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action263(
+    __action261(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action430<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Ident, usize),
 ) -> Vec<ast::Ident>
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action203(
+    let __temp0 = __action201(
+        module_name,
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action266(
+    __action264(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action431<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> Vec<ast::Ident>
 {
     let __start0 = *__lookbehind;
     let __end0 = *__lookahead;
-    let __temp0 = __action204(
+    let __temp0 = __action202(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action266(
+    __action264(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action432<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __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 = __action203(
+    let __temp0 = __action201(
+        module_name,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action267(
+    __action265(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action433<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, alloc::vec::Vec<ast::Ident>, usize),
 ) -> Vec<ast::Ident>
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action204(
+    let __temp0 = __action202(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action267(
+    __action265(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action434<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -671309,10 +713718,12 @@
     let __start0 = __3.0;
     let __end0 = __3.2;
     let __temp0 = __action132(
+        module_name,
         __3,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action397(
+    __action396(
+        module_name,
         __0,
         __1,
         __2,
@@ -671322,10 +713733,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action435<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -671336,11 +713750,13 @@
     let __start0 = __2.2;
     let __end0 = __3.0;
     let __temp0 = __action133(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action397(
+    __action396(
+        module_name,
         __0,
         __1,
         __2,
@@ -671350,324 +713766,457 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
 fn __action436<
+    'module_name,
 >(
+    module_name: &'module_name str,
+    __0: (usize, Vec<ast::Import>, usize),
+    __1: (usize, Vec<ast::ModuleStatement>, usize),
+) -> ast::Module
+{
+    let __start0 = __0.0;
+    let __end0 = __0.2;
+    let __temp0 = __action132(
+        module_name,
+        __0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action406(
+        module_name,
+        __temp0,
+        __1,
+    )
+}
+
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+    clippy::just_underscores_and_digits)]
+fn __action437<
+    'module_name,
+>(
+    module_name: &'module_name str,
+    __0: (usize, Vec<ast::ModuleStatement>, usize),
+) -> ast::Module
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action133(
+        module_name,
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action406(
+        module_name,
+        __temp0,
+        __0,
+    )
+}
+
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+    clippy::just_underscores_and_digits)]
+fn __action438<
+    'module_name,
+>(
+    module_name: &'module_name str,
     __0: (usize, ast::Ident, usize),
     __1: (usize, Vec<ast::PathSegment>, usize),
 ) -> ast::PathExpr
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action166(
+    let __temp0 = __action164(
+        module_name,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action398(
+    __action397(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action437<
+fn __action439<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Ident, usize),
 ) -> ast::PathExpr
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action167(
+    let __temp0 = __action165(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action398(
+    __action397(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action438<
+fn __action440<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::StructField, usize),
 ) -> Vec<ast::StructField>
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action195(
+    let __temp0 = __action193(
+        module_name,
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action270(
+    __action268(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action439<
+fn __action441<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> Vec<ast::StructField>
 {
     let __start0 = *__lookbehind;
     let __end0 = *__lookahead;
-    let __temp0 = __action196(
+    let __temp0 = __action194(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action270(
+    __action268(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action440<
+fn __action442<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __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 = __action195(
+    let __temp0 = __action193(
+        module_name,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action271(
+    __action269(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action441<
+fn __action443<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, alloc::vec::Vec<ast::StructField>, usize),
 ) -> Vec<ast::StructField>
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action196(
+    let __temp0 = __action194(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action271(
+    __action269(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action442<
+fn __action444<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, (ast::Ident, ast::StructInitField), usize),
 ) -> Vec<(ast::Ident, ast::StructInitField)>
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action185(
+    let __temp0 = __action183(
+        module_name,
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action274(
+    __action272(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action443<
+fn __action445<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> Vec<(ast::Ident, ast::StructInitField)>
 {
     let __start0 = *__lookbehind;
     let __end0 = *__lookahead;
-    let __temp0 = __action186(
+    let __temp0 = __action184(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action274(
+    __action272(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action444<
+fn __action446<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __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 = __action185(
+    let __temp0 = __action183(
+        module_name,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action275(
+    __action273(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action445<
+fn __action447<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __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 = __action186(
+    let __temp0 = __action184(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action275(
+    __action273(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action446<
+fn __action448<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Type, usize),
 ) -> Vec<ast::Type>
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action175(
+    let __temp0 = __action173(
+        module_name,
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action278(
+    __action276(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action447<
+fn __action449<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __lookbehind: &usize,
     __lookahead: &usize,
 ) -> Vec<ast::Type>
 {
     let __start0 = *__lookbehind;
     let __end0 = *__lookahead;
-    let __temp0 = __action176(
+    let __temp0 = __action174(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action278(
+    __action276(
+        module_name,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action448<
+fn __action450<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __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 = __action175(
+    let __temp0 = __action173(
+        module_name,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action279(
+    __action277(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action449<
+fn __action451<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, alloc::vec::Vec<ast::Type>, usize),
 ) -> Vec<ast::Type>
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action176(
+    let __temp0 = __action174(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action279(
+    __action277(
+        module_name,
         __0,
         __temp0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action450<
+fn __action452<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Ident, usize),
 ) -> ast::Type
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action169(
+    let __temp0 = __action167(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action407(
+        module_name,
         __temp0,
         __0,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action451<
+fn __action453<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, alloc::vec::Vec<ast::TypeQualifier>, usize),
     __1: (usize, ast::Ident, usize),
 ) -> ast::Type
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action170(
+    let __temp0 = __action168(
+        module_name,
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action407(
+        module_name,
         __temp0,
         __1,
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action452<
+fn __action454<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
     __2: (usize, Vec<ast::Type>, usize),
@@ -671676,12 +714225,14 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action169(
+    let __temp0 = __action167(
+        module_name,
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action408(
+        module_name,
         __temp0,
         __0,
         __1,
@@ -671690,10 +714241,13 @@
     )
 }
 
-#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
+#[allow(unused_variables)]
+#[allow(clippy::too_many_arguments, clippy::needless_lifetimes,
     clippy::just_underscores_and_digits)]
-fn __action453<
+fn __action455<
+    'module_name,
 >(
+    module_name: &'module_name str,
     __0: (usize, alloc::vec::Vec<ast::TypeQualifier>, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
@@ -671703,11 +714257,13 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action170(
+    let __temp0 = __action168(
+        module_name,
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action408(
+        module_name,
         __temp0,
         __1,
         __2,
@@ -671717,18 +714273,18 @@
 }
 #[allow(clippy::type_complexity, dead_code)]
 
-pub  trait __ToTriple<>
+pub  trait __ToTriple<'module_name, >
 {
     fn to_triple(value: Self) -> Result<(usize,Token,usize), __lalrpop_util::ParseError<usize, Token, LexicalError>>;
 }
 
-impl<> __ToTriple<> for (usize, Token, usize)
+impl<'module_name, > __ToTriple<'module_name, > for (usize, Token, usize)
 {
     fn to_triple(value: Self) -> Result<(usize,Token,usize), __lalrpop_util::ParseError<usize, Token, LexicalError>> {
         Ok(value)
     }
 }
-impl<> __ToTriple<> for Result<(usize, Token, usize), LexicalError>
+impl<'module_name, > __ToTriple<'module_name, > for Result<(usize, Token, usize), LexicalError>
 {
     fn to_triple(value: Self) -> Result<(usize,Token,usize), __lalrpop_util::ParseError<usize, Token, LexicalError>> {
         match value {
diff --git a/src/edlang_parser/lib.rs.html b/src/edlang_parser/lib.rs.html
index 6c1449b7ec..10456137f9 100644
--- a/src/edlang_parser/lib.rs.html
+++ b/src/edlang_parser/lib.rs.html
@@ -122,6 +122,7 @@
 121
 122
 123
+124
 
use std::ops::Range;
 
 use crate::error::Error;
@@ -146,10 +147,11 @@
 
 pub fn parse_ast(
     source: &str,
-) -> Result<Vec<edlang_ast::Module>, ParseError<usize, Token, LexicalError>> {
+    module_name: &str,
+) -> Result<edlang_ast::Module, ParseError<usize, Token, LexicalError>> {
     let lexer = Lexer::new(source);
-    let parser = grammar::ModulesParser::new();
-    parser.parse(lexer)
+    let parser = grammar::TopLevelModuleParser::new();
+    parser.parse(module_name, lexer)
 }
 
 pub fn print_report<'a>(
@@ -170,7 +172,7 @@
         ParseError::InvalidToken { location } => {
             let loc = *location;
             Report::build(ReportKind::Error, path, loc)
-                .with_code("P1")
+                .with_code("InvalidToken")
                 .with_label(
                     Label::new((path, loc..(loc + 1)))
                         .with_color(colors.next())
@@ -181,7 +183,7 @@
         ParseError::UnrecognizedEof { location, expected } => {
             let loc = *location;
             Report::build(ReportKind::Error, path, loc)
-                .with_code("P2")
+                .with_code("UnrecognizedEof")
                 .with_label(
                     Label::new((path, loc..(loc + 1)))
                         .with_message(format!(
@@ -194,7 +196,7 @@
         }
         ParseError::UnrecognizedToken { token, expected } => {
             Report::build(ReportKind::Error, path, token.0)
-                .with_code(3)
+                .with_code("UnrecognizedToken")
                 .with_label(
                     Label::new((path, token.0..token.2))
                         .with_message(format!(
@@ -207,7 +209,7 @@
                 .finish()
         }
         ParseError::ExtraToken { token } => Report::build(ReportKind::Error, path, token.0)
-            .with_code("P3")
+            .with_code("ExtraToken")
             .with_message("Extra token")
             .with_label(
                 Label::new((path, token.0..token.2))
@@ -218,7 +220,7 @@
             LexicalError::InvalidToken(err, range) => match err {
                 tokens::LexingError::NumberParseError => {
                     Report::build(ReportKind::Error, path, range.start)
-                        .with_code(4)
+                        .with_code("InvalidToken")
                         .with_message("Error parsing literal number")
                         .with_label(
                             Label::new((path, range.start..range.end))
@@ -228,7 +230,7 @@
                         .finish()
                 }
                 tokens::LexingError::Other => Report::build(ReportKind::Error, path, range.start)
-                    .with_code(4)
+                    .with_code("Other")
                     .with_message("Other error")
                     .with_label(
                         Label::new((path, range.start..range.end))
diff --git a/trait.impl/core/default/trait.Default.js b/trait.impl/core/default/trait.Default.js
index 1c81405541..4ff81966aa 100644
--- a/trait.impl/core/default/trait.Default.js
+++ b/trait.impl/core/default/trait.Default.js
@@ -12,7 +12,7 @@
 "concolor":[["impl Default for ColorChoice"]],
 "edb":[["impl Default for Package"],["impl Default for Profile"]],
 "edlang_ir":[["impl Default for SymbolTable"],["impl Default for DefId"],["impl Default for ProgramBody"]],
-"edlang_parser":[["impl Default for LexingError"],["impl Default for BinarySecondLvlOpParser"],["impl Default for BinaryThirdLvlOpParser"],["impl Default for PathSegmentsParser"],["impl Default for ModulesParser"],["impl Default for ModuleParser"],["impl Default for BinaryFirstLvlOpParser"],["impl Default for UnaryOpParser"]],
+"edlang_parser":[["impl Default for LexingError"],["impl Default for BinarySecondLvlOpParser"],["impl Default for BinaryThirdLvlOpParser"],["impl Default for PathSegmentsParser"],["impl Default for TopLevelModuleParser"],["impl Default for ModuleParser"],["impl Default for BinaryFirstLvlOpParser"],["impl Default for UnaryOpParser"]],
 "edlang_span":[["impl Default for Span"]],
 "fnv":[["impl Default for FnvHasher"]],
 "git2":[["impl Default for StashFlags"],["impl Default for EmailCreateOptions"],["impl Default for ReferenceFormat"],["impl<'cb> Default for RebaseOptions<'cb>"],["impl Default for DescribeFormatOptions"],["impl<'cb> Default for SubmoduleUpdateOptions<'cb>"],["impl<'cb> Default for FetchOptions<'cb>"],["impl<'cb> Default for StashApplyOptions<'cb>"],["impl Default for RemoteRedirect"],["impl Default for TreeUpdateBuilder"],["impl Default for Buf"],["impl Default for PathspecFlags"],["impl<'cb> Default for CheckoutBuilder<'cb>"],["impl Default for BlameOptions"],["impl Default for StashApplyFlags"],["impl Default for DescribeOptions"],["impl Default for StatusOptions"],["impl Default for CredentialType"],["impl Default for DiffFindOptions"],["impl Default for MergeOptions"],["impl<'a> Default for RemoteCallbacks<'a>"],["impl Default for IndexAddOption"],["impl Default for AttrCheckFlags"],["impl<'a> Default for ProxyOptions<'a>"],["impl Default for DiffOptions"],["impl<'cb> Default for RepoBuilder<'cb>"],["impl<'cb> Default for PushOptions<'cb>"]],
diff --git a/trait.impl/core/marker/trait.Freeze.js b/trait.impl/core/marker/trait.Freeze.js
index 47d5a0e135..a8b2a5aa4a 100644
--- a/trait.impl/core/marker/trait.Freeze.js
+++ b/trait.impl/core/marker/trait.Freeze.js
@@ -16,7 +16,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 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_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 TopLevelModuleParser",1,["edlang_parser::grammar::grammar::__parse__TopLevelModule::TopLevelModuleParser"]],["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 081ba60088..0995b949f4 100644 --- a/trait.impl/core/marker/trait.Send.js +++ b/trait.impl/core/marker/trait.Send.js @@ -16,7 +16,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 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_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 TopLevelModuleParser",1,["edlang_parser::grammar::grammar::__parse__TopLevelModule::TopLevelModuleParser"]],["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.Sync.js b/trait.impl/core/marker/trait.Sync.js index 5dd1a8da0f..d1da122637 100644 --- a/trait.impl/core/marker/trait.Sync.js +++ b/trait.impl/core/marker/trait.Sync.js @@ -16,7 +16,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 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_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 TopLevelModuleParser",1,["edlang_parser::grammar::grammar::__parse__TopLevelModule::TopLevelModuleParser"]],["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 c77fb9c16d..b59218f27a 100644 --- a/trait.impl/core/marker/trait.Unpin.js +++ b/trait.impl/core/marker/trait.Unpin.js @@ -16,7 +16,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 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_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 TopLevelModuleParser",1,["edlang_parser::grammar::grammar::__parse__TopLevelModule::TopLevelModuleParser"]],["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/panic/unwind_safe/trait.RefUnwindSafe.js b/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js index 9042b56862..a781234f51 100644 --- a/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ b/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -16,7 +16,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 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_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 TopLevelModuleParser",1,["edlang_parser::grammar::grammar::__parse__TopLevelModule::TopLevelModuleParser"]],["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 973e632f15..84710a788e 100644 --- a/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js +++ b/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js @@ -16,7 +16,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 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_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 TopLevelModuleParser",1,["edlang_parser::grammar::grammar::__parse__TopLevelModule::TopLevelModuleParser"]],["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 a2926de338..3415b304dc 100644 --- a/type.impl/core/result/enum.Result.js +++ b/type.impl/core/result/enum.Result.js @@ -2,7 +2,7 @@ "anyhow":[["
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,"anyhow::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,"anyhow::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,"anyhow::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,"anyhow::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,"anyhow::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","anyhow::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>","anyhow::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>","anyhow::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>","anyhow::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","anyhow::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","anyhow::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>","anyhow::Result"],["
1.0.0 · source§

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

","StructuralEq","anyhow::Result"],["
1.0.0 · source§

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

","Eq","anyhow::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","anyhow::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","anyhow::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","anyhow::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","anyhow::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","anyhow::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>","anyhow::Result"],["
1.0.0 · source§

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

","StructuralPartialEq","anyhow::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","anyhow::Result"],["
1.0.0 · source§

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

","Copy","anyhow::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","anyhow::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","anyhow::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>","anyhow::Result"],["
source§

impl<T, E> Context<T, E> for Result<T, E>
where\n E: StdError + Send + Sync + 'static,

source§

fn context<C>(self, context: C) -> Result<T, Error>
where\n C: Display + Send + Sync + 'static,

Wrap the error value with additional context.
source§

fn with_context<C, F>(self, context: F) -> Result<T, Error>
where\n C: Display + Send + Sync + 'static,\n F: FnOnce() -> C,

Wrap the error value with additional context that is evaluated lazily\nonly once an error does occur.
","Context","anyhow::Result"]], "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<'module_name> __ToTriple<'module_name> for Result<(usize, Token, usize), LexicalError>

","__ToTriple<'module_name>","edlang_parser::lexer::Spanned"]], "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"]], "serde":[], "strsim":[["
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,"strsim::HammingResult"],["
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","strsim::HammingResult"],["
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","strsim::HammingResult"],["
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>","strsim::HammingResult"],["
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>","strsim::HammingResult"],["
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>","strsim::HammingResult"],["
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","strsim::HammingResult"],["
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","strsim::HammingResult"],["
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>","strsim::HammingResult"],["
1.0.0 · source§

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

","StructuralEq","strsim::HammingResult"],["
1.0.0 · source§

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

","Eq","strsim::HammingResult"],["
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","strsim::HammingResult"],["
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","strsim::HammingResult"],["
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","strsim::HammingResult"],["
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","strsim::HammingResult"],["
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>","strsim::HammingResult"],["
1.0.0 · source§

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

","StructuralPartialEq","strsim::HammingResult"],["
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","strsim::HammingResult"],["
1.0.0 · source§

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

","Copy","strsim::HammingResult"]],